diff options
540 files changed, 11831 insertions, 4282 deletions
diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index fe15ad4f0..8ef901006 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -19,13 +19,13 @@ on: jobs: windows_package: - runs-on: windows-2019 + runs-on: windows-2022 if: (github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'package')) strategy: matrix: arch: [x64, x86] python: ["3.9"] - libtorrent: [2.0.6, 1.2.15] + libtorrent: [2.0.7, 1.2.19] steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it @@ -49,7 +49,7 @@ jobs: cache: pip - name: Prepare pip - run: python -m pip install wheel + run: python -m pip install wheel setuptools==68.* - name: Install GTK run: | @@ -62,11 +62,14 @@ jobs: python -m pip install --no-index --find-links="C:\GTK\release\python" pycairo PyGObject - name: Install Python dependencies + # Pillow no longer provides 32-bit wheels for Windows + # so specify only-binary to install old version. run: > python -m pip install - twisted[tls]==22.4.0 + --only-binary=pillow + twisted[tls]==22.8.0 libtorrent==${{ matrix.libtorrent }} - pyinstaller==4.10 + pyinstaller pygame -r requirements.txt @@ -81,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 @@ -94,7 +98,7 @@ jobs: python setup_nsis.py makensis /Darch=${{ matrix.arch }} deluge-win-installer.nsi - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 with: name: deluge-py${{ matrix.python }}-lt${{ matrix.libtorrent }}-${{ matrix.arch }} path: packaging/win/*.exe diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fdfebc4c3..1f0675c2c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,22 +6,25 @@ on: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: - + inputs: + core-dump: + description: "Set to 1 to enable retrieving core dump from crashes" + default: "0" jobs: test-linux: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 strategy: matrix: python-version: ["3.7", "3.10"] steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} cache: "pip" @@ -33,8 +36,8 @@ jobs: - name: Install dependencies run: | - pip install --upgrade pip wheel - pip install -r requirements.txt -r requirements-tests.txt + pip install --upgrade pip wheel setuptools + pip install -r requirements-ci.txt pip install -e . - name: Install security dependencies @@ -46,18 +49,21 @@ jobs: TESTSSL_VER: 3.0.6 TESTSSL_URL: https://codeload.github.com/drwetter/testssl.sh/tar.gz/refs/tags/v - - name: Setup core dump directory + - name: Setup core dump catch and store + if: github.event.inputs.core-dump == '1' run: | sudo mkdir /cores/ && sudo chmod 777 /cores/ echo "/cores/%E.%p" | sudo tee /proc/sys/kernel/core_pattern + ulimit -c unlimited + sudo apt install glibc-tools + echo "DEBUG_PREFIX=catchsegv python -X dev -m" >> $GITHUB_ENV - name: Test with pytest run: | - ulimit -c unlimited # Enable core dumps to be captured python -c 'from deluge._libtorrent import lt; print(lt.__version__)'; - catchsegv python -X dev -m pytest -v -m "not (todo or gtkui)" deluge + $DEBUG_PREFIX pytest -v -m "not (todo or gtkui)" deluge - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 # capture all crashes as build artifacts if: failure() with: @@ -65,19 +71,19 @@ jobs: path: /cores test-windows: - runs-on: windows-latest + runs-on: windows-2022 strategy: matrix: python-version: ["3.7", "3.10"] steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} cache: "pip" @@ -85,8 +91,8 @@ jobs: - name: Install dependencies run: | - pip install --upgrade pip wheel - pip install -r requirements.txt -r requirements-tests.txt + pip install --upgrade pip wheel setuptools + pip install -r requirements-ci.txt pip install -e . - name: Test with pytest diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index cafdfa53c..9afa06936 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -15,30 +15,23 @@ jobs: steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 - - uses: actions/setup-python@v2 - with: - python-version: "3.8" - - name: Cache pip - uses: actions/cache@v2 + + - uses: actions/setup-python@v4 with: - # This path is specific to Ubuntu - path: ~/.cache/pip - # Look to see if there is a cache hit for the corresponding requirements file - key: ${{ runner.os }}-pip-${{ hashFiles('requirements*.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - ${{ runner.os }}- + python-version: "3.10" + cache: "pip" + cache-dependency-path: "requirements*.txt" - name: Install dependencies run: | pip install --upgrade pip wheel pip install tox - sudo apt-get install enchant + sudo apt-get install enchant-2 - - name: Test with tox + - name: Build docs with tox env: TOX_ENV: docs run: | diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3a347fd98..6c55c6b77 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -11,7 +11,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 - name: Run pre-commit linting - uses: pre-commit/action@v2.0.2 + uses: pre-commit/action@v3.0.0 diff --git a/.gitignore b/.gitignore index 15fb2aa88..5a5989bdf 100644 --- a/.gitignore +++ b/.gitignore @@ -16,10 +16,11 @@ deluge.pot deluge/ui/web/js/*.js deluge/ui/web/js/extjs/ext-extensions*.js *.desktop -*.appdata.xml +*.metainfo.xml .build_data* osx/app RELEASE-VERSION .venv* # used by setuptools to cache downloaded eggs /.eggs +_pytest_temp/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5ff4a93d3..4d0d922ef 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,31 +7,31 @@ exclude: > )$ repos: - repo: https://github.com/psf/black - rev: 22.3.0 + rev: 23.1.0 hooks: - id: black name: Fmt Black - repo: https://github.com/pre-commit/mirrors-prettier - rev: v2.5.1 + rev: v2.7.1 hooks: - id: prettier name: Fmt Prettier # Workaround to list modified files only. args: [--list-different] - repo: https://github.com/pycqa/isort - rev: 5.10.1 + rev: 5.12.0 hooks: - id: isort name: Fmt isort - repo: https://github.com/pycqa/flake8 - rev: 4.0.1 + rev: 6.0.0 hooks: - id: flake8 name: Chk Flake8 additional_dependencies: - pep8-naming==0.12.1 - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.1.0 + rev: v4.4.0 hooks: - id: double-quote-string-fixer name: Fix Double-quotes @@ -44,7 +44,7 @@ repos: - id: trailing-whitespace name: Fix Trailing whitespace - repo: https://github.com/asottile/pyupgrade - rev: v2.31.0 + rev: v3.3.1 hooks: - id: pyupgrade args: [--py36-plus] diff --git a/.readthedocs.yml b/.readthedocs.yml index 8d94a56fc..90b567f29 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -5,6 +5,14 @@ # Required version: 2 +build: + os: ubuntu-22.04 + tools: + python: "3.10" + jobs: + post_checkout: + - git fetch --unshallow || true + # Build documentation in the docs/ directory with Sphinx sphinx: configuration: docs/source/conf.py @@ -14,9 +22,8 @@ formats: all # Optionally set the version of Python and requirements required to build your docs python: - version: 3.7 install: - requirements: requirements.txt - requirements: docs/requirements.txt - - method: setuptools + - method: pip path: . diff --git a/CHANGELOG.md b/CHANGELOG.md index 04e6bfd0e..d878a488d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,27 @@ # Changelog -## 2.1.0 (WIP) +## 2.2.x (TBA) + +### Breaking changes + +- Python 3.6 support removed (Python >= 3.7) + +## 2.1.1 (2022-07-10) + +### Core + +- Fix missing trackers added via magnet +- Fix handling magnets with tracker tiers + +## 2.1.0 (2022-06-28) + +### Breaking changes + +- Python 2 support removed (Python >= 3.6) +- libtorrent minimum requirement increased (>= 1.2). ### Core -- Drop Python 2 support for Python 3 only. -- Set libtorrent minimum required version to 1.2. - Add support for SVG tracker icons. - Fix tracker icon error handling. - Fix cleaning-up tracker icon temp files. diff --git a/deluge/bencode.py b/deluge/bencode.py index b012ca097..df8cc85c2 100644 --- a/deluge/bencode.py +++ b/deluge/bencode.py @@ -85,7 +85,6 @@ def bdecode(x): class Bencached: - __slots__ = ['bencoded'] def __init__(self, s): diff --git a/deluge/common.py b/deluge/common.py index 77573ffd7..be655447f 100644 --- a/deluge/common.py +++ b/deluge/common.py @@ -23,16 +23,22 @@ import tarfile import time from contextlib import closing from datetime import datetime +from importlib import resources from io import BytesIO +from pathlib import Path from urllib.parse import unquote_plus, urljoin from urllib.request import pathname2url -import pkg_resources - from deluge.decorators import deprecated from deluge.error import InvalidPathError try: + from importlib.metadata import distribution +except ImportError: + from pkg_resources import get_distribution as distribution + + +try: import chardet except ImportError: chardet = None @@ -90,7 +96,7 @@ def get_version(): Returns: str: The version of Deluge. """ - return pkg_resources.get_distribution('Deluge').version + return distribution('Deluge').version def get_default_config_dir(filename=None): @@ -290,20 +296,22 @@ def get_pixmap(fname): return resource_filename('deluge', os.path.join('ui', 'data', 'pixmaps', fname)) -def resource_filename(module, path): - """Get filesystem path for a resource. - - This function contains a work-around for pkg_resources.resource_filename - not returning the correct path with multiple packages installed. +def resource_filename(module: str, path: str) -> str: + """Get filesystem path for a non-python resource. - So if there's a second deluge package, installed globally and another in - develop mode somewhere else, while pkg_resources.get_distribution('Deluge') - returns the proper deluge instance, pkg_resources.resource_filename - does not, it returns the first found on the python path, which is wrong. + Abstracts getting module resource files. Originally created to + workaround pkg_resources.resource_filename limitations with + multiple Deluge packages installed. """ - return pkg_resources.get_distribution('Deluge').get_resource_filename( - pkg_resources._manager, os.path.join(*(module.split('.') + [path])) - ) + path = Path(path) + + try: + with resources.as_file(resources.files(module) / path) as resource_file: + return str(resource_file) + except AttributeError: + # Python <= 3.8 + with resources.path(module, path.parts[0]) as resource_file: + return str(resource_file.joinpath(*path.parts[1:])) def open_file(path, timestamp=None): @@ -415,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: @@ -469,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. @@ -493,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. @@ -501,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: @@ -537,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) @@ -586,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 @@ -620,10 +640,14 @@ def tokenize(text): Returns: list: A list of strings and/or numbers. - 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. + 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): @@ -644,12 +668,16 @@ size_units = [ {'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}, ] @@ -734,6 +762,8 @@ MAGNET_SCHEME = 'magnet:?' XT_BTIH_PARAM = 'xt=urn:btih:' DN_PARAM = 'dn=' TR_PARAM = 'tr=' +TR_TIER_PARAM = 'tr.' +TR_TIER_REGEX = re.compile(r'^tr.(\d+)=(\S+)') def is_magnet(uri): @@ -776,8 +806,6 @@ def get_magnet_info(uri): """ - tr0_param = 'tr.' - tr0_param_regex = re.compile(r'^tr.(\d+)=(\S+)') if not uri.startswith(MAGNET_SCHEME): return {} @@ -805,12 +833,14 @@ def get_magnet_info(uri): tracker = unquote_plus(param[len(TR_PARAM) :]) trackers[tracker] = tier tier += 1 - elif param.startswith(tr0_param): - try: - tier, tracker = re.match(tr0_param_regex, param).groups() - trackers[tracker] = tier - except AttributeError: - pass + elif param.startswith(TR_TIER_PARAM): + tracker_match = re.match(TR_TIER_REGEX, param) + if not tracker_match: + continue + + tier, tracker = tracker_match.groups() + tracker = unquote_plus(tracker) + trackers[tracker] = int(tier) if info_hash: if not name: @@ -831,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. @@ -873,7 +903,7 @@ def get_path_size(path): return os.path.getsize(path) dir_size = 0 - for (p, dummy_dirs, files) in os.walk(path): + for p, dummy_dirs, files in os.walk(path): for _file in files: filename = os.path.join(p, _file) dir_size += os.path.getsize(filename) diff --git a/deluge/component.py b/deluge/component.py index 5646e8bd2..421f49a7b 100644 --- a/deluge/component.py +++ b/deluge/component.py @@ -59,11 +59,16 @@ class Component: Deluge core. **update()** - This method is called every 1 second by default while the - Componented is in a *Started* state. The interval can be + Component is in a *Started* state. The interval can be specified during instantiation. The update() timer can be paused by instructing the :class:`ComponentRegistry` to pause this Component. + **pause()** - This method is called when the component is being paused. + + **resume()** - This method is called when the component resumes from a Paused + state. + **shutdown()** - This method is called when the client is exiting. If the Component is in a "Started" state when this is called, a call to stop() will be issued prior to shutdown(). @@ -80,10 +85,10 @@ 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 it's update timer stopped, but will + **Paused** - The Component has had its update timer stopped, but will still be considered in a Started state. """ @@ -111,9 +116,8 @@ class Component: _ComponentRegistry.deregister(self) def _component_start_timer(self): - if hasattr(self, 'update'): - self._component_timer = LoopingCall(self.update) - self._component_timer.start(self._component_interval) + self._component_timer = LoopingCall(self.update) + self._component_timer.start(self._component_interval) def _component_start(self): def on_start(result): @@ -129,13 +133,10 @@ class Component: return fail(result) if self._component_state == 'Stopped': - if hasattr(self, 'start'): - self._component_state = 'Starting' - d = deferLater(reactor, 0, self.start) - d.addCallbacks(on_start, on_start_fail) - self._component_starting_deferred = d - else: - d = maybeDeferred(on_start, None) + self._component_state = 'Starting' + d = deferLater(reactor, 0, self.start) + d.addCallbacks(on_start, on_start_fail) + self._component_starting_deferred = d elif self._component_state == 'Starting': return self._component_starting_deferred elif self._component_state == 'Started': @@ -165,14 +166,11 @@ class Component: return result if self._component_state != 'Stopped' and self._component_state != 'Stopping': - if hasattr(self, 'stop'): - self._component_state = 'Stopping' - d = maybeDeferred(self.stop) - d.addCallback(on_stop) - d.addErrback(on_stop_fail) - self._component_stopping_deferred = d - else: - d = maybeDeferred(on_stop, None) + self._component_state = 'Stopping' + d = maybeDeferred(self.stop) + d.addCallback(on_stop) + d.addErrback(on_stop_fail) + self._component_stopping_deferred = d if self._component_state == 'Stopping': return self._component_stopping_deferred @@ -182,13 +180,12 @@ class Component: def _component_pause(self): def on_pause(result): self._component_state = 'Paused' + if self._component_timer and self._component_timer.running: + self._component_timer.stop() if self._component_state == 'Started': - if self._component_timer and self._component_timer.running: - d = maybeDeferred(self._component_timer.stop) - d.addCallback(on_pause) - else: - d = succeed(None) + d = maybeDeferred(self.pause) + d.addCallback(on_pause) elif self._component_state == 'Paused': d = succeed(None) else: @@ -205,9 +202,10 @@ class Component: def _component_resume(self): def on_resume(result): self._component_state = 'Started' + self._component_start_timer() if self._component_state == 'Paused': - d = maybeDeferred(self._component_start_timer) + d = maybeDeferred(self.resume) d.addCallback(on_resume) else: d = fail( @@ -222,9 +220,7 @@ class Component: def _component_shutdown(self): def on_stop(result): - if hasattr(self, 'shutdown'): - return maybeDeferred(self.shutdown) - return succeed(None) + return maybeDeferred(self.shutdown) d = self._component_stop() d.addCallback(on_stop) @@ -245,6 +241,12 @@ class Component: def shutdown(self): pass + def pause(self): + pass + + def resume(self): + pass + class ComponentRegistry: """The ComponentRegistry holds a list of currently registered :class:`Component` objects. diff --git a/deluge/conftest.py b/deluge/conftest.py index 55c50a42d..c3070140d 100644 --- a/deluge/conftest.py +++ b/deluge/conftest.py @@ -3,7 +3,7 @@ # the additional special exception to link portions of this program with the OpenSSL library. # See LICENSE for more details. # - +import asyncio import tempfile import warnings from unittest.mock import Mock, patch @@ -12,7 +12,7 @@ import pytest 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 @@ -59,8 +61,9 @@ def mock_callback(): @pytest.fixture def config_dir(tmp_path): - deluge.configmanager.set_config_dir(tmp_path) - yield tmp_path + config_dir = tmp_path / 'config' + deluge.configmanager.set_config_dir(config_dir) + yield config_dir @pytest_twisted.async_yield_fixture() @@ -84,9 +87,10 @@ async def client(request, config_dir, monkeypatch, listen_port): @pytest_twisted.async_yield_fixture -async def daemon(request, config_dir): +async def daemon(request, config_dir, tmp_path): listen_port = DEFAULT_LISTEN_PORT - logfile = f'daemon_{request.node.name}.log' + logfile = tmp_path / 'daemon.log' + if hasattr(request.cls, 'daemon_custom_script'): custom_script = request.cls.daemon_custom_script else: @@ -116,7 +120,10 @@ async def daemon(request, config_dir): raise exception_error daemon.listen_port = listen_port yield daemon - await daemon.kill() + try: + await daemon.kill() + except ProcessTerminated: + pass @pytest.fixture(autouse=True) @@ -137,7 +144,7 @@ def common_fixture(config_dir, request, monkeypatch, listen_port): @pytest_twisted.async_yield_fixture(scope='function') -async def component(request): +async def component(): """Verify component registry is clean, and clean up after test.""" if len(_component._ComponentRegistry.components) != 0: warnings.warn( @@ -190,3 +197,18 @@ def mock_mkstemp(tmp_path): tmp_file = tempfile.mkstemp(dir=tmp_path) with patch('tempfile.mkstemp', return_value=tmp_file): yield tmp_file + + +def pytest_collection_modifyitems(session, config, items) -> None: + """ + Automatically runs async tests with pytest_twisted.ensureDeferred + """ + function_items = (item for item in items if isinstance(item, pytest.Function)) + for function_item in function_items: + function = function_item.obj + if hasattr(function, '__func__'): + # methods need to be unwrapped. + function = function.__func__ + if asyncio.iscoroutinefunction(function): + # This is how pytest_twisted marks ensureDeferred tests + setattr(function, '_pytest_twisted_mark', 'async_test') diff --git a/deluge/core/alertmanager.py b/deluge/core/alertmanager.py index 9a1ded52e..cf541f015 100644 --- a/deluge/core/alertmanager.py +++ b/deluge/core/alertmanager.py @@ -14,10 +14,15 @@ This should typically only be used by the Core. Plugins should utilize the `:mod:EventManager` for similar functionality. """ +import contextlib import logging -from types import SimpleNamespace +import threading +import time +from collections import defaultdict +from functools import partial +from typing import Any, Callable -from twisted.internet import reactor +from twisted.internet import reactor, task, threads import deluge.component as component from deluge._libtorrent import lt @@ -31,7 +36,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. @@ -52,48 +57,88 @@ class AlertManager(component.Component): self.session.apply_settings({'alert_mask': alert_mask}) # handlers is a dictionary of lists {"alert_type": [handler1,h2,..]} - self.handlers = {} + self.handlers = defaultdict(list) + self.handlers_timeout_secs = 2 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.check_delayed_calls(): + time.sleep(0.05) + continue + + if self.session.wait_for_alert(1000) is None: + continue + if self._event.wait(): + threads.blockingCallFromThread(reactor, self.maybe_handle_alerts) + + def on_delayed_call_timeout(self, result, timeout, **kwargs): + log.warning('Alert handler was timed-out before being called %s', kwargs) + + def cancel_delayed_calls(self): + """Cancel all delayed handlers.""" for delayed_call in self.delayed_calls: - if delayed_call.active(): - delayed_call.cancel() + delayed_call.cancel() self.delayed_calls = [] - def register_handler(self, alert_type, handler): + def check_delayed_calls(self) -> bool: + """Returns True if any handler calls are delayed.""" + self.delayed_calls = [dc for dc in self.delayed_calls if not dc.called] + return len(self.delayed_calls) > 0 + + def maybe_handle_alerts(self) -> None: + if self._component_state != 'Started': + 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 in handle_alerts. The handler function should look like: handler(alert) Where 'alert' is the actual alert object from libtorrent. - :param alert_type: str, this is string representation of the alert name - :param handler: func(alert), the function to be called when the alert is raised + Args: + alert_type: String representation of the libtorrent alert name. + Can be supplied with or without `_alert` suffix. + handler: Callback function when the alert is raised. """ - if alert_type not in self.handlers: - # There is no entry for this alert type yet, so lets make it with an - # empty list. - self.handlers[alert_type] = [] + if alert_type and alert_type.endswith('_alert'): + alert_type = alert_type[: -len('_alert')] - # Append the handler to the list in the handlers dictionary self.handlers[alert_type].append(handler) log.debug('Registered handler for alert %s', alert_type) - def deregister_handler(self, handler): + def deregister_handler(self, handler: Callable[[Any], None]): """ - De-registers the `:param:handler` function from all alert types. + De-registers the `handler` function from all alert types. - :param handler: func, the handler function to deregister + Args: + handler: The handler function to deregister. """ - # Iterate through all handlers and remove 'handler' where found - for (dummy_key, value) in self.handlers.items(): - if handler in value: - # Handler is in this alert type list - value.remove(handler) + for alert_type_handlers in self.handlers.values(): + with contextlib.suppress(ValueError): + alert_type_handlers.remove(handler) def handle_alerts(self): """ @@ -112,26 +157,32 @@ class AlertManager(component.Component): num_alerts, ) - # Loop through all alerts in the queue for alert in alerts: - alert_type = type(alert).__name__ + alert_type = alert.what() + # Display the alert message if log.isEnabledFor(logging.DEBUG): log.debug('%s: %s', alert_type, decode_bytes(alert.message())) + + if alert_type not in self.handlers: + continue + # Call any handlers for this alert type - if alert_type in self.handlers: - for handler in self.handlers[alert_type]: - if log.isEnabledFor(logging.DEBUG): - log.debug('Handling alert: %s', alert_type) - # Copy alert attributes - alert_copy = SimpleNamespace( - **{ - attr: getattr(alert, attr) - for attr in dir(alert) - if not attr.startswith('__') - } - ) - self.delayed_calls.append(reactor.callLater(0, handler, alert_copy)) + for handler in self.handlers[alert_type]: + if log.isEnabledFor(logging.DEBUG): + log.debug('Handling alert: %s', alert_type) + d = task.deferLater(reactor, 0, handler, alert) + on_handler_timeout = partial( + self.on_delayed_call_timeout, + handler=handler.__qualname__, + alert_type=alert_type, + ) + d.addTimeout( + self.handlers_timeout_secs, + reactor, + onTimeoutCancel=on_handler_timeout, + ) + self.delayed_calls.append(d) def set_alert_queue_size(self, queue_size): """Sets the maximum size of the libtorrent alert queue""" diff --git a/deluge/core/authmanager.py b/deluge/core/authmanager.py index 8db4902df..3ff8a3ad9 100644 --- a/deluge/core/authmanager.py +++ b/deluge/core/authmanager.py @@ -28,8 +28,8 @@ log = logging.getLogger(__name__) AUTH_LEVELS_MAPPING = { 'NONE': AUTH_LEVEL_NONE, 'READONLY': AUTH_LEVEL_READONLY, - 'DEFAULT': AUTH_LEVEL_NORMAL, - 'NORMAL': AUTH_LEVEL_DEFAULT, + 'DEFAULT': AUTH_LEVEL_DEFAULT, + 'NORMAL': AUTH_LEVEL_NORMAL, 'ADMIN': AUTH_LEVEL_ADMIN, } AUTH_LEVELS_MAPPING_REVERSE = {v: k for k, v in AUTH_LEVELS_MAPPING.items()} diff --git a/deluge/core/core.py b/deluge/core/core.py index 35cf0194f..e2130f595 100644 --- a/deluge/core/core.py +++ b/deluge/core/core.py @@ -12,17 +12,16 @@ import logging 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 @@ -199,7 +198,7 @@ class Core(component.Component): self.session_status_timer_interval = 0.5 self.session_status_timer = task.LoopingCall(self.session.post_session_stats) self.alertmanager.register_handler( - 'session_stats_alert', self._on_alert_session_stats + 'session_stats', self._on_alert_session_stats ) self.session_rates_timer_interval = 2 self.session_rates_timer = task.LoopingCall(self._update_session_rates) @@ -992,31 +991,33 @@ class Core(component.Component): 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=( - path, - tracker, - piece_length, - comment, - target, - webseeds, - private, - created_by, - trackers, - add_to_session, - ), - ).start() + return threads.deferToThread( + self._create_torrent_thread, + path, + tracker, + piece_length, + 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, @@ -1030,27 +1031,41 @@ class Core(component.Component): 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: diff --git a/deluge/core/rpcserver.py b/deluge/core/rpcserver.py index d4ca5d19d..81ab2e0a5 100644 --- a/deluge/core/rpcserver.py +++ b/deluge/core/rpcserver.py @@ -545,8 +545,8 @@ class RPCServer(component.Component): :type event: :class:`deluge.event.DelugeEvent` """ log.debug('intevents: %s', self.factory.interested_events) - # Find sessions interested in this event - for session_id, interest in self.factory.interested_events.items(): + # Use copy of `interested_events` since it can mutate while iterating. + for session_id, interest in self.factory.interested_events.copy().items(): if event.name in interest: log.debug('Emit Event: %s %s', event.name, event.args) # This session is interested so send a RPC_EVENT diff --git a/deluge/core/torrentmanager.py b/deluge/core/torrentmanager.py index 4904e94ed..c43a7a262 100644 --- a/deluge/core/torrentmanager.py +++ b/deluge/core/torrentmanager.py @@ -50,10 +50,10 @@ from deluge.event import ( log = logging.getLogger(__name__) LT_DEFAULT_ADD_TORRENT_FLAGS = ( - lt.add_torrent_params_flags_t.flag_paused - | lt.add_torrent_params_flags_t.flag_auto_managed - | lt.add_torrent_params_flags_t.flag_update_subscribe - | lt.add_torrent_params_flags_t.flag_apply_ip_filter + lt.torrent_flags.paused + | lt.torrent_flags.auto_managed + | lt.torrent_flags.update_subscribe + | lt.torrent_flags.apply_ip_filter ) @@ -202,34 +202,32 @@ class TorrentManager(component.Component): # Register alert functions alert_handles = [ - 'external_ip_alert', - 'performance_alert', - 'add_torrent_alert', - 'metadata_received_alert', - 'torrent_finished_alert', - 'torrent_paused_alert', - 'torrent_checked_alert', - 'torrent_resumed_alert', - 'tracker_reply_alert', - 'tracker_announce_alert', - 'tracker_warning_alert', - 'tracker_error_alert', - 'file_renamed_alert', - 'file_error_alert', - 'file_completed_alert', - 'storage_moved_alert', - 'storage_moved_failed_alert', - 'state_update_alert', - 'state_changed_alert', - 'save_resume_data_alert', - 'save_resume_data_failed_alert', - 'fastresume_rejected_alert', + 'external_ip', + 'performance', + 'add_torrent', + 'metadata_received', + 'torrent_finished', + 'torrent_paused', + 'torrent_checked', + 'torrent_resumed', + 'tracker_reply', + 'tracker_announce', + 'tracker_warning', + 'tracker_error', + 'file_renamed', + 'file_error', + 'file_completed', + 'storage_moved', + 'storage_moved_failed', + 'state_update', + 'state_changed', + 'save_resume_data', + 'save_resume_data_failed', + 'fastresume_rejected', ] for alert_handle in alert_handles: - on_alert_func = getattr( - self, ''.join(['on_alert_', alert_handle.replace('_alert', '')]) - ) + on_alert_func = getattr(self, ''.join(['on_alert_', alert_handle])) self.alerts.register_handler(alert_handle, on_alert_func) # Define timers @@ -292,8 +290,8 @@ class TorrentManager(component.Component): if torrent.options['remove_at_ratio']: self.remove(torrent_id) break - if not torrent.status.paused: - torrent.pause() + + torrent.pause() def __getitem__(self, torrent_id): """Return the Torrent with torrent_id. @@ -369,11 +367,11 @@ class TorrentManager(component.Component): add_torrent_params.flags = ( ( LT_DEFAULT_ADD_TORRENT_FLAGS - | lt.add_torrent_params_flags_t.flag_duplicate_is_error - | lt.add_torrent_params_flags_t.flag_upload_mode + | lt.torrent_flags.duplicate_is_error + | lt.torrent_flags.upload_mode ) - ^ lt.add_torrent_params_flags_t.flag_auto_managed - ^ lt.add_torrent_params_flags_t.flag_paused + ^ lt.torrent_flags.auto_managed + ^ lt.torrent_flags.paused ) torrent_handle = self.session.add_torrent(add_torrent_params) @@ -436,8 +434,8 @@ class TorrentManager(component.Component): magnet_info = get_magnet_info(magnet) if magnet_info: add_torrent_params['name'] = magnet_info['name'] + add_torrent_params['trackers'] = list(magnet_info['trackers']) torrent_id = magnet_info['info_hash'] - # Workaround lt 1.2 bug for magnet resume data with no metadata add_torrent_params['info_hash'] = bytes(bytearray.fromhex(torrent_id)) else: raise AddTorrentError( @@ -481,16 +479,12 @@ class TorrentManager(component.Component): # Set flags: enable duplicate_is_error & override_resume_data, disable auto_managed. add_torrent_params['flags'] = ( - LT_DEFAULT_ADD_TORRENT_FLAGS - | lt.add_torrent_params_flags_t.flag_duplicate_is_error - | lt.add_torrent_params_flags_t.flag_override_resume_data - ) ^ lt.add_torrent_params_flags_t.flag_auto_managed + LT_DEFAULT_ADD_TORRENT_FLAGS | lt.torrent_flags.duplicate_is_error + ) ^ lt.torrent_flags.auto_managed if options['seed_mode']: - add_torrent_params['flags'] |= lt.add_torrent_params_flags_t.flag_seed_mode + add_torrent_params['flags'] |= lt.torrent_flags.seed_mode if options['super_seeding']: - add_torrent_params[ - 'flags' - ] |= lt.add_torrent_params_flags_t.flag_super_seeding + add_torrent_params['flags'] |= lt.torrent_flags.super_seeding return torrent_id, add_torrent_params diff --git a/deluge/decorators.py b/deluge/decorators.py index 2f9fcd7d3..92e3ecf59 100644 --- a/deluge/decorators.py +++ b/deluge/decorators.py @@ -166,7 +166,8 @@ def deprecated(func): class CoroutineDeferred(defer.Deferred): """Wraps a coroutine in a Deferred. - It will dynamically pass through the underlying coroutine without wrapping where apporpriate.""" + It will dynamically pass through the underlying coroutine without wrapping where apporpriate. + """ def __init__(self, coro: Coroutine): # Delay this import to make sure a reactor was installed first diff --git a/deluge/i18n/af.po b/deluge/i18n/af.po index d9a5a3009..ad60b4946 100644 --- a/deluge/i18n/af.po +++ b/deluge/i18n/af.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/ar.po b/deluge/i18n/ar.po index dfb0c3c53..bfc057c4d 100644 --- a/deluge/i18n/ar.po +++ b/deluge/i18n/ar.po @@ -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" @@ -4440,16 +4440,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4458,7 +4458,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/ast.po b/deluge/i18n/ast.po index 1713b0a08..3e2e61fa0 100644 --- a/deluge/i18n/ast.po +++ b/deluge/i18n/ast.po @@ -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" @@ -4434,16 +4434,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4452,7 +4452,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/be.po b/deluge/i18n/be.po index 8ef0ed85f..cf4ed2586 100644 --- a/deluge/i18n/be.po +++ b/deluge/i18n/be.po @@ -8,50 +8,50 @@ 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-08-01 15:28+0000\n" +"Last-Translator: Anton Hryb <Unknown>\n" "Language-Team: Belarusian <be@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 "Б" #: deluge/common.py:412 msgid "KiB" -msgstr "" +msgstr "КіБ" #: deluge/common.py:413 msgid "MiB" -msgstr "" +msgstr "МіБ" #: deluge/common.py:414 msgid "GiB" -msgstr "" +msgstr "ГіБ" #: deluge/common.py:415 msgid "TiB" -msgstr "" +msgstr "ТіБ" #: deluge/common.py:416 msgid "K" -msgstr "" +msgstr "К" #: deluge/common.py:417 msgid "M" -msgstr "" +msgstr "М" #: deluge/common.py:418 msgid "G" -msgstr "" +msgstr "Г" #: deluge/common.py:419 msgid "T" -msgstr "" +msgstr "Т" #: 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 "К/с" #: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449 #: deluge/ui/gtk3/menubar.py:455 @@ -76,55 +76,55 @@ msgstr "" #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94 #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121 msgid "KiB/s" -msgstr "КБ/с" +msgstr "КіБ/с" #: deluge/common.py:521 msgid "M/s" -msgstr "" +msgstr "М/с" #: deluge/common.py:521 msgid "MiB/s" -msgstr "" +msgstr "МіБ/с" #: deluge/common.py:527 msgid "G/s" -msgstr "" +msgstr "Г/с" #: deluge/common.py:527 msgid "GiB/s" -msgstr "" +msgstr "ГіБ/с" #: deluge/common.py:533 msgid "T/s" -msgstr "" +msgstr "Т/с" #: deluge/common.py:533 msgid "TiB/s" -msgstr "" +msgstr "ТіБ/с" #: deluge/argparserbase.py:172 msgid "Common Options" -msgstr "" +msgstr "Агульныя параметры" #: deluge/argparserbase.py:175 msgid "Print this help message" -msgstr "" +msgstr "Друк дапаможнага паведамлення" #: deluge/argparserbase.py:182 msgid "Print version information" -msgstr "" +msgstr "Друк інфармацыі пра версію" #: deluge/argparserbase.py:194 msgid "Set the config directory path" -msgstr "" +msgstr "Наладзіць шлях да папкі з канфігурацыяй" #: deluge/argparserbase.py:200 msgid "Output to specified logfile instead of stdout" -msgstr "" +msgstr "Вывад у вызначаны файл логаў замест stdout" #: deluge/argparserbase.py:206 msgid "Set the log level (none, error, warning, info, debug)" -msgstr "" +msgstr "Узровень лога (none, error, warning, info, debug)" #: deluge/argparserbase.py:215 #, python-format @@ -132,10 +132,12 @@ msgid "" "Enable logfile rotation, with optional maximum logfile size, default: " "%(const)s (Logfile rotation count is 5)" msgstr "" +"Уключыць змену файла лога, з максімумам памера файла, па змаўчанні: " +"%(const)s (Logfile rotation count is 5)" #: deluge/argparserbase.py:223 msgid "Quieten logging output (Same as `--loglevel none`)" -msgstr "" +msgstr "Сцішаны вывад логаў (Тое ж што `--loglevel none`)" #: deluge/argparserbase.py:231 #, python-format @@ -143,91 +145,93 @@ msgid "" "Profile %(prog)s with cProfile. Outputs to stdout unless a filename is " "specified" msgstr "" +"Профіль %(prog)s з cProfile. Вывад у stdout пакуль не вызначана імя файла" #: deluge/argparserbase.py:351 msgid "Process Control Options" -msgstr "" +msgstr "Опцыі кантролю працэса" #: deluge/argparserbase.py:357 msgid "Pidfile to store the process id" -msgstr "" +msgstr "Файл для захавання id працэса" #: deluge/argparserbase.py:365 msgid "Do not daemonize (fork) this process" -msgstr "" +msgstr "Не дэманізаваць (разгаліноўваць) гэты працэс" #: deluge/argparserbase.py:379 msgid "Change to this user on startup (Requires root)" -msgstr "" +msgstr "Змяніць гэтага карыстальніка пры запуску (патрэбны правы root)" #: deluge/argparserbase.py:386 msgid "Change to this group on startup (Requires root)" -msgstr "" +msgstr "Змяніць на гэту групу пры запуску (патрэбны правы root)" #: deluge/core/daemon_entry.py:25 msgid "Daemon Options" -msgstr "" +msgstr "Опцыі дэмана" #: deluge/core/daemon_entry.py:31 msgid "IP address to listen for UI connections" -msgstr "" +msgstr "IP адрасы каб слухаць падлучэнні" #: deluge/core/daemon_entry.py:39 msgid "Port to listen for UI connections on" -msgstr "" +msgstr "Які порт слухаць пры падлучэнні" #: deluge/core/daemon_entry.py:47 msgid "IP address to listen for BitTorrent connections" -msgstr "" +msgstr "IP адрас каб слухаць падлучэнне BitTorrent" #: deluge/core/daemon_entry.py:56 msgid "" "The network interface name or IP address for outgoing BitTorrent connections." -msgstr "" +msgstr "Назва сеткі ці IP адрас для сыходзячага падлучэння BitTorrent." #: deluge/core/daemon_entry.py:63 msgid "Config keys to be unmodified by `set_config` RPC" msgstr "" +"Ключы канфігурацый для RPC, немадыфікаваных з дапамогай `set_config`" #: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130 #: deluge/ui/web/js/deluge-all/UI.js:18 msgid "All" -msgstr "" +msgstr "Усе" #: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490 #: 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" -msgstr "" +msgstr "Выдзяленне" #: 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 "" +msgstr "Праверка" #: 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 "" +msgstr "Спампоўка" #: 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 "" +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 @@ -258,7 +262,7 @@ msgstr "Назва" #: deluge/ui/web/js/deluge-all/details/PeersTab.js:80 #: deluge/ui/web/js/deluge-all/details/FilesTab.js:34 msgid "Progress" -msgstr "Стан" +msgstr "Прагрэс" #: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12 msgid "State" @@ -278,17 +282,17 @@ msgstr "Памер" #: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:244 msgid "Downloaded" -msgstr "" +msgstr "Спампавана" #: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:252 msgid "Uploaded" -msgstr "" +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 @@ -300,32 +304,32 @@ msgstr "Рэйтынг" #: deluge/ui/web/js/deluge-all/TorrentGrid.js:144 #: deluge/ui/web/js/deluge-all/details/PeersTab.js:87 msgid "Down Speed" -msgstr "Запампоўка" +msgstr "Хуткасць спампоўкі" #: 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 "Раздача" +msgstr "Хуткасць раздачы" #: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:268 msgid "Down Limit" -msgstr "" +msgstr "Ліміт спампоўкі" #: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:276 msgid "Up Limit" -msgstr "" +msgstr "Ліміт раздачы" #: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101 msgid "Max Connections" -msgstr "" +msgstr "Макс злучэнняў" #: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109 msgid "Max Upload Slots" -msgstr "" +msgstr "Макс слотаў раздачы" #: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:136 @@ -336,7 +340,7 @@ msgstr "Піры" #: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:128 msgid "Seeds" -msgstr "" +msgstr "Сіды" #: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:173 @@ -346,13 +350,13 @@ msgstr "Даступна" #: 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 "Сіды:Піры" #: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203 #: deluge/ui/gtk3/torrentview.py:387 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:181 msgid "Added" -msgstr "Даданы" +msgstr "Дададзена" #: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88 #: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408 @@ -367,55 +371,55 @@ msgstr "Трэкер" #: deluge/ui/web/js/deluge-all/TorrentGrid.js:213 #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31 msgid "Download Folder" -msgstr "" +msgstr "Папка спампоўкі" #: deluge/ui/common.py:75 msgid "Seeding Time" -msgstr "" +msgstr "Час сідавання" #: deluge/ui/common.py:76 msgid "Active Time" -msgstr "" +msgstr "Актыўны час" #: deluge/ui/common.py:78 msgid "Last Activity" -msgstr "" +msgstr "Апошняя актыўнасць" #: deluge/ui/common.py:81 msgid "Finished Time" -msgstr "" +msgstr "Час завяршэння" #: 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 "Паказ завершанага" #: 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 msgid "ETA" -msgstr "Засталася" +msgstr "Засталося" #: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418 #: 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 msgid "Prioritize First/Last" -msgstr "Прыярытэт першай/апошняй" +msgstr "Прыятытэт Першае/Апошняе" #: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32 #: 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 "Паслядоўная спампоўка" #: deluge/ui/common.py:97 deluge/ui/common.py:98 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35 @@ -427,27 +431,27 @@ msgstr "Аўтаматычнае кіраванне" #: deluge/ui/common.py:99 msgid "Stop At Ratio" -msgstr "" +msgstr "Спыніць пры суадносінах" #: deluge/ui/common.py:100 msgid "Stop Ratio" -msgstr "" +msgstr "Суадносіны для спынення" #: deluge/ui/common.py:101 msgid "Remove At Ratio" -msgstr "" +msgstr "Выдаліць пры суадносінах" #: deluge/ui/common.py:102 deluge/ui/common.py:108 msgid "Move On Completed" -msgstr "" +msgstr "Перамясціць пры завяршэнні" #: deluge/ui/common.py:104 msgid "Move Completed Path" -msgstr "" +msgstr "Шлях перамяшчэння завершанага" #: deluge/ui/common.py:112 msgid "Move On Completed Path" -msgstr "" +msgstr "Перамясціць на шлях завершанага" #: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135 #: deluge/ui/gtk3/torrentview.py:416 @@ -455,25 +459,25 @@ 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" -msgstr "" +msgstr "Часткі" #: deluge/ui/common.py:117 msgid "Seed Rank" -msgstr "" +msgstr "Ранг сідаў" #: 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 "Супер сідаванне" #: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122 msgid "Warning" -msgstr "Папярэджаньне" +msgstr "Папярэджанне" #: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123 msgid "Announce OK" @@ -496,7 +500,7 @@ msgstr "Інтэрфейс" #: deluge/ui/console/modes/preferences/preferences.py:90 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21 msgid "Downloads" -msgstr "Запампоўкі" +msgstr "Спампоўкі" #: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33 #: deluge/ui/console/modes/preferences/preference_panes.py:409 @@ -523,7 +527,7 @@ msgstr "Чарга" #: deluge/ui/console/modes/preferences/preferences.py:91 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28 msgid "Network" -msgstr "Сеціва" +msgstr "Сетка" #: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146 #: deluge/ui/console/modes/preferences/preference_panes.py:640 @@ -562,33 +566,35 @@ msgstr "Дэман" #: deluge/ui/common.py:138 #: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18 msgid "Plugins" -msgstr "Модулі" +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 "" "Deluge cannot find the `deluged` executable, check that the deluged package " "is installed, or added to your PATH." msgstr "" +"Deluge не знаходзіць выканальны `deluged`, праверце што пакет усталяваны, " +"або дадайце шлях." #: deluge/ui/countries.py:10 msgid "Afghanistan" @@ -608,7 +614,7 @@ msgstr "Алжыр" #: deluge/ui/countries.py:14 msgid "American Samoa" -msgstr "Усходняе Самоа" +msgstr "Амерыканскае Самоа" #: deluge/ui/countries.py:15 msgid "Andorra" @@ -680,7 +686,7 @@ msgstr "Бельгія" #: deluge/ui/countries.py:32 msgid "Belize" -msgstr "Бэліз" +msgstr "Беліз" #: deluge/ui/countries.py:33 msgid "Benin" @@ -688,7 +694,7 @@ msgstr "Бенін" #: deluge/ui/countries.py:34 msgid "Bermuda" -msgstr "Бэрмудзкія астравы" +msgstr "Бермудскія астравы" #: deluge/ui/countries.py:35 msgid "Bhutan" @@ -708,7 +714,7 @@ msgstr "Батсвана" #: deluge/ui/countries.py:39 msgid "Bouvet Island" -msgstr "Востраў Буве" +msgstr "Востраў Бувэ" #: deluge/ui/countries.py:40 msgid "Brazil" @@ -728,7 +734,7 @@ msgstr "Балгарыя" #: deluge/ui/countries.py:44 msgid "Burkina Faso" -msgstr "Буркіна Фасо" +msgstr "Буркіна-Фасо" #: deluge/ui/countries.py:45 msgid "Burundi" @@ -748,7 +754,7 @@ msgstr "Канада" #: deluge/ui/countries.py:49 msgid "Cape Verde" -msgstr "Каба Вэрдэ" +msgstr "Каба-Вердэ" #: deluge/ui/countries.py:50 msgid "Cayman Islands" @@ -756,7 +762,7 @@ msgstr "Кайманавы астравы" #: deluge/ui/countries.py:51 msgid "Central African Republic" -msgstr "Цэнтральнаафрыканская Рэспубліка" +msgstr "Цэнтральна-Афрыканская Рэспубліка" #: deluge/ui/countries.py:52 msgid "Chad" @@ -772,11 +778,11 @@ msgstr "Кітай" #: deluge/ui/countries.py:55 msgid "Christmas Island" -msgstr "Востраў Раства" +msgstr "Востраў Каляд" #: deluge/ui/countries.py:56 msgid "Cocos (Keeling) Islands" -msgstr "Какосавыя астравы (Астравы Килинг)" +msgstr "Какосавыя (Кілінг) астравы" #: deluge/ui/countries.py:57 msgid "Colombia" @@ -800,7 +806,7 @@ msgstr "Астравы Кука" #: deluge/ui/countries.py:62 msgid "Costa Rica" -msgstr "Коста Рыка" +msgstr "Коста-Рыка" #: deluge/ui/countries.py:63 msgid "Cote d'Ivoire" @@ -820,7 +826,7 @@ msgstr "Кіпр" #: deluge/ui/countries.py:67 msgid "Czech Republic" -msgstr "Чэшская рэспубліка" +msgstr "Чэшская Рэспубліка" #: deluge/ui/countries.py:68 msgid "Denmark" @@ -868,7 +874,7 @@ msgstr "Эфіопія" #: deluge/ui/countries.py:79 msgid "Falkland Islands (Malvinas)" -msgstr "Фальклендзкія (Мальвінскія) астравы" +msgstr "Фалклендскія (Мальвінскія) астравы" #: deluge/ui/countries.py:80 msgid "Faroe Islands" @@ -956,7 +962,7 @@ msgstr "Гвінея" #: deluge/ui/countries.py:101 msgid "Guinea-Bissau" -msgstr "Гвінея-Бісаў" +msgstr "Гвінея-Бісау" #: deluge/ui/countries.py:102 msgid "Guyana" @@ -996,7 +1002,7 @@ msgstr "Індыя" #: deluge/ui/countries.py:111 msgid "Indonesia" -msgstr "Інданэзія" +msgstr "Інданезія" #: deluge/ui/countries.py:112 msgid "Iran, Islamic Republic of" @@ -1064,11 +1070,11 @@ msgstr "Кувейт" #: deluge/ui/countries.py:128 msgid "Kyrgyzstan" -msgstr "Кіргізія" +msgstr "Кыргызстан" #: deluge/ui/countries.py:129 msgid "Lao People's Democratic Republic" -msgstr "Лаоская Народна-Дэмакратычная Рэспубліка" +msgstr "Лаос" #: deluge/ui/countries.py:130 msgid "Latvia" @@ -1092,7 +1098,7 @@ msgstr "Лівійская Арабская Джамахірыя" #: deluge/ui/countries.py:135 msgid "Liechtenstein" -msgstr "Ліхтэнштайн" +msgstr "Ліхтэнштэйн" #: deluge/ui/countries.py:136 msgid "Lithuania" @@ -1108,7 +1114,7 @@ msgstr "Макао" #: deluge/ui/countries.py:139 msgid "Macedonia, The Former Yugoslav Republic of" -msgstr "Македонія" +msgstr "Паўночная Македонія" #: deluge/ui/countries.py:140 msgid "Madagascar" @@ -1124,7 +1130,7 @@ msgstr "Малайзія" #: deluge/ui/countries.py:143 msgid "Maldives" -msgstr "Мальдыўскія астравы" +msgstr "Мальдывы" #: deluge/ui/countries.py:144 msgid "Mali" @@ -1160,7 +1166,7 @@ msgstr "Мексіка" #: deluge/ui/countries.py:152 msgid "Micronesia, Federated States of" -msgstr "Фэдэратыўныя Штаты Мікранэзіі" +msgstr "Федэратыўныя Штаты Мікранезіі" #: deluge/ui/countries.py:153 msgid "Moldova" @@ -1180,7 +1186,7 @@ msgstr "Чарнагорыя" #: deluge/ui/countries.py:157 msgid "Montserrat" -msgstr "Мансэрат" +msgstr "Мантсерат" #: deluge/ui/countries.py:158 msgid "Morocco" @@ -1204,7 +1210,7 @@ msgstr "Науру" #: deluge/ui/countries.py:163 msgid "Nepal" -msgstr "Нэпал" +msgstr "Непал" #: deluge/ui/countries.py:164 msgid "Netherlands" @@ -1236,7 +1242,7 @@ msgstr "Нігерыя" #: deluge/ui/countries.py:171 msgid "Niue" -msgstr "Ніуе" +msgstr "Ніуэ" #: deluge/ui/countries.py:172 msgid "Norfolk Island" @@ -1272,7 +1278,7 @@ msgstr "Панама" #: deluge/ui/countries.py:180 msgid "Papua New Guinea" -msgstr "Папуа - Новая Гвінея" +msgstr "Папуа-Новая Гвінея" #: deluge/ui/countries.py:181 msgid "Paraguay" @@ -1288,7 +1294,7 @@ msgstr "Філіпіны" #: deluge/ui/countries.py:184 msgid "Pitcairn" -msgstr "Піткэрн" +msgstr "Астравы Піткэрн" #: deluge/ui/countries.py:185 msgid "Poland" @@ -1300,7 +1306,7 @@ msgstr "Партугалія" #: deluge/ui/countries.py:187 msgid "Puerto Rico" -msgstr "Пуэрта Рыка" +msgstr "Пуэрта-Рыка" #: deluge/ui/countries.py:188 msgid "Qatar" @@ -1324,31 +1330,31 @@ msgstr "Руанда" #: deluge/ui/countries.py:193 msgid "Saint Barthelemy" -msgstr "Сэнт-Бартелеми" +msgstr "Сен-Бартэльмі" #: deluge/ui/countries.py:194 msgid "Saint Helena" -msgstr "Востраў Святой Елены" +msgstr "Востраў Святой Алены" #: deluge/ui/countries.py:195 msgid "Saint Kitts and Nevis" -msgstr "Сэнт-Кітс і Нэвіс" +msgstr "Сент-Кітс і Невіс" #: deluge/ui/countries.py:196 msgid "Saint Lucia" -msgstr "Сэнт-Люсія" +msgstr "Сент-Люсія" #: deluge/ui/countries.py:197 msgid "Saint Martin" -msgstr "Сэнт-Марцін" +msgstr "Сен-Мартэн" #: deluge/ui/countries.py:198 msgid "Saint Pierre and Miquelon" -msgstr "Сэнт-П'ер і Мікелон" +msgstr "Сен-П'ер і Мікелон" #: deluge/ui/countries.py:199 msgid "Saint Vincent and the Grenadines" -msgstr "Сэнт-Вінсэнт і Грэнадзіны" +msgstr "Сент-Вінсент і Грэнадзіны" #: deluge/ui/countries.py:200 msgid "Samoa" @@ -1360,7 +1366,7 @@ msgstr "Сан-Марына" #: deluge/ui/countries.py:202 msgid "Sao Tome and Principe" -msgstr "Сан-Томе і Прынсыпі" +msgstr "Сан-Тамэ і Прынсіпі" #: deluge/ui/countries.py:203 msgid "Saudi Arabia" @@ -1396,7 +1402,7 @@ msgstr "Славенія" #: deluge/ui/countries.py:211 msgid "Solomon Islands" -msgstr "Саламонавы Астравы" +msgstr "Саламонавы астравы" #: deluge/ui/countries.py:212 msgid "Somalia" @@ -1408,7 +1414,7 @@ msgstr "Паўднёва-Афрыканская Рэспубліка" #: deluge/ui/countries.py:214 msgid "South Georgia and the South Sandwich Islands" -msgstr "Паўднёвая Джорджыя і Паўднёвыя Сэндвічавыя выспы" +msgstr "Паўднёвая Георгія і Паўднёвыя Сандвічавы астравы" #: deluge/ui/countries.py:215 msgid "Spain" @@ -1428,7 +1434,7 @@ msgstr "Сурынам" #: deluge/ui/countries.py:219 msgid "Svalbard and Jan Mayen" -msgstr "Шпіцбэрген і Ян-Майен" +msgstr "Шпіцберген і Ян-Маен" #: deluge/ui/countries.py:220 msgid "Swaziland" @@ -1448,7 +1454,7 @@ msgstr "Сірыйская Арабская Рэспубліка" #: deluge/ui/countries.py:224 msgid "Taiwan" -msgstr "" +msgstr "Тайвань" #: deluge/ui/countries.py:225 msgid "Tajikistan" @@ -1456,7 +1462,7 @@ msgstr "Таджыкістан" #: deluge/ui/countries.py:226 msgid "Tanzania, United Republic of" -msgstr "Злучаная Рэспубліка Танзанія" +msgstr "Танзанія" #: deluge/ui/countries.py:227 msgid "Thailand" @@ -1464,7 +1470,7 @@ msgstr "Тайланд" #: deluge/ui/countries.py:228 msgid "Timor-Leste" -msgstr "Усходні Тымор" +msgstr "Тымор-Лешці" #: deluge/ui/countries.py:229 msgid "Togo" @@ -1472,7 +1478,7 @@ msgstr "Тога" #: deluge/ui/countries.py:230 msgid "Tokelau" -msgstr "Такелаў" +msgstr "Такелау" #: deluge/ui/countries.py:231 msgid "Tonga" @@ -1496,7 +1502,7 @@ msgstr "Туркменістан" #: deluge/ui/countries.py:236 msgid "Turks and Caicos Islands" -msgstr "Астравы Тэркс і Кайкас" +msgstr "Астравы Цёркс і Кайкас" #: deluge/ui/countries.py:237 msgid "Tuvalu" @@ -1512,7 +1518,7 @@ msgstr "Украіна" #: deluge/ui/countries.py:240 msgid "United Arab Emirates" -msgstr "Злучаныя Арабскія Эміраты" +msgstr "Аб'яднаныя Арабскія Эміраты" #: deluge/ui/countries.py:241 msgid "United Kingdom" @@ -1524,7 +1530,7 @@ msgstr "Злучаныя Штаты Амерыкі" #: deluge/ui/countries.py:243 msgid "United States Minor Outlying Islands" -msgstr "Знешнія Малыя Астравы (ЗША)" +msgstr "Малыя Аддаленыя астравы ЗША" #: deluge/ui/countries.py:244 msgid "Uruguay" @@ -1556,7 +1562,7 @@ msgstr "Віргінскія астравы (ЗША)" #: deluge/ui/countries.py:251 msgid "Wallis and Futuna" -msgstr "Астравы Уоліс і Футуна" +msgstr "Уоліс і Футуна" #: deluge/ui/countries.py:252 msgid "Western Sahara" @@ -1576,45 +1582,47 @@ msgstr "Зімбабвэ" #: deluge/ui/ui_entry.py:51 msgid "UI Options" -msgstr "" +msgstr "Опцыі UI" #: deluge/ui/ui_entry.py:57 msgid "Set the default UI to be run, when no UI is specified" -msgstr "" +msgstr "Вызначыць UI для запуску па змаўчанні, калі UI не вызначаны" #: deluge/ui/ui_entry.py:91 msgid "" "Alternative UI to launch, with optional ui args \n" " (default UI: *)" msgstr "" +"Альтэрнатыўны UI для запуску, з апцыянальнымі аргументамі \n" +" (UI па змаўчанні: *)" #: deluge/ui/web/web.py:32 msgid "Web Server Options" -msgstr "" +msgstr "Опцыі вэб-сервера" #: deluge/ui/web/web.py:38 msgid "IP address for web server to listen on" -msgstr "" +msgstr "IP адрас для праслухоўвання вэб-сервера" #: deluge/ui/web/web.py:46 msgid "Port for web server to listen on" -msgstr "" +msgstr "Порт для праслухоўвання вэб-сервера" #: deluge/ui/web/web.py:53 msgid "Set the base path that the ui is running on" -msgstr "" +msgstr "Наладзіць базавы шлях для запуску UI" #: deluge/ui/web/web.py:56 msgid "Force the web server to use SSL" -msgstr "" +msgstr "Прымусіць вэб-сервер выкарыстоўваць SSL" #: deluge/ui/web/web.py:61 msgid "Force the web server to disable SSL" -msgstr "" +msgstr "Прымусіць вэб-сервер адключыць SSL" #: deluge/ui/web/json_api.py:868 msgid "Daemon does not exist" -msgstr "" +msgstr "Дэман не існуе" #: deluge/ui/web/json_api.py:875 msgid "Daemon not running" @@ -1660,18 +1668,18 @@ msgstr "Выберыце файл" #: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2 #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2 msgid "_Cancel" -msgstr "" +msgstr "_Скасаваць" #: deluge/ui/gtk3/createtorrentdialog.py:134 #: deluge/ui/gtk3/createtorrentdialog.py:171 #: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160 msgid "_Open" -msgstr "" +msgstr "_Адкрыць" #: deluge/ui/gtk3/createtorrentdialog.py:165 #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28 msgid "Choose a folder" -msgstr "Выберыце каталог" +msgstr "Выбраць папку" #: deluge/ui/gtk3/createtorrentdialog.py:254 #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4 @@ -1682,12 +1690,12 @@ msgstr "Захаваць файл .torrent" #: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3 #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30 msgid "_Save" -msgstr "" +msgstr "_Захаваць" #: deluge/ui/gtk3/createtorrentdialog.py:271 #: deluge/ui/gtk3/addtorrentdialog.py:712 msgid "Torrent files" -msgstr "Торэнт файлы" +msgstr "Торэнт-файлы" #: deluge/ui/gtk3/createtorrentdialog.py:275 #: deluge/ui/gtk3/addtorrentdialog.py:716 @@ -1696,16 +1704,16 @@ msgstr "Усе файлы" #: deluge/ui/gtk3/mainwindow.py:192 msgid "Enter your password to show Deluge..." -msgstr "" +msgstr "Увядзіце пароль, каб паказаць Deluge..." #: deluge/ui/gtk3/mainwindow.py:251 msgid "Enter your password to Quit Deluge..." -msgstr "" +msgstr "Увядзіце пароль, каб выйсці з Deluge..." #: deluge/ui/gtk3/mainwindow.py:343 #, python-brace-format msgid "D: {download_rate} U: {upload_rate} - Deluge" -msgstr "" +msgstr "D: {download_rate} U: {upload_rate} - Deluge" #: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26 #: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96 @@ -1719,21 +1727,21 @@ msgstr "Deluge" #: deluge/ui/gtk3/path_combo_chooser.py:393 #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20 msgid "Edit path" -msgstr "" +msgstr "Змяніць шлях" #: deluge/ui/gtk3/path_combo_chooser.py:395 #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21 msgid "Remove path" -msgstr "" +msgstr "Выдаліць шлях" #: deluge/ui/gtk3/options_tab.py:136 msgid "_Apply to selected" -msgstr "" +msgstr "_Прымяніць да выбранага" #: deluge/ui/gtk3/aboutdialog.py:40 #, python-format msgid "Copyright %(year_start)s-%(year_end)s Deluge Team" -msgstr "" +msgstr "Аўтарскае права %(year_start)s-%(year_end)s Каманда Deluge" #: deluge/ui/gtk3/aboutdialog.py:44 #: deluge/ui/web/js/deluge-all/AboutWindow.js:52 @@ -1741,19 +1749,21 @@ msgid "" "A peer-to-peer file sharing program\n" "utilizing the BitTorrent protocol." msgstr "" +"Праграма перадачы файлаў\n" +"выкарыстоўваючы пратакол BitTorrent." #: deluge/ui/gtk3/aboutdialog.py:46 #: deluge/ui/web/js/deluge-all/AboutWindow.js:55 msgid "Client:" -msgstr "" +msgstr "Кліент:" #: deluge/ui/gtk3/aboutdialog.py:52 msgid "Current Developers:" -msgstr "" +msgstr "Дзейныя распрацоўнікі:" #: deluge/ui/gtk3/aboutdialog.py:61 msgid "Past Developers or Contributors:" -msgstr "" +msgstr "Ранейшыя распрацоўнікі і ўкладальнікі:" #: deluge/ui/gtk3/aboutdialog.py:795 msgid "" @@ -1781,16 +1791,38 @@ 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; як трэцяй " +"версіі, так і пазнейшымі. \n" +"\n" +"Гэта праграма распаўсюджваецца ў надзеі, што яна будзе карысна, але БЕЗ " +"АНІЯКІХ ГАРАНТЫЙ; нават без гарантыі ПРЫДАТНАСЦІ ці АДПАВЕДНАСЦІ " +"ПРЫЗНАЧЭННЮ. Для падрабязнасцей глядзіце тэкст ліцэнзіі GNU General Public " +"License. \n" +"\n" +"Вы павінны былі атрымаць копію ліцэнзіі GNU General Public License разам з " +"гэтай праграмай; калі ж не, глядзіце <http://www.gnu.org/licenses>. \n" +"\n" +"Дадаткова, як выключэнне, уладальнікі правоў даюць зазвол спасылацца на код " +"праграмы праз свабодныя бібліятэкі OpenSSL. Вы павінны прытрымлівацца " +"ліцэнзіі GNU General Public License з павагай да ўсяго кода, які " +"выкарыстоўваецца акрамя OpenSSL. \n" +"\n" +"Пры змяненні файла(ў) у адпаведнасці з выключэннем, вы можаце пашырыць " +"выключэнне да вашай версіі файла(ў), але вы не абавязаны рабіць гэта. Калі " +"вы не жадаеце рабіць гэта, выдаліце гэта паведамленне з вашай версіі. Калі " +"вы выдаліце паведамленне аб выключэнні з усіх файлаў праграмы, таксама " +"выдаліце яго тут." #: deluge/ui/gtk3/aboutdialog.py:829 #: deluge/ui/web/js/deluge-all/AboutWindow.js:65 msgid "Server:" -msgstr "Сэрвер:" +msgstr "Сервер:" #: deluge/ui/gtk3/aboutdialog.py:833 #: deluge/ui/web/js/deluge-all/AboutWindow.js:41 msgid "libtorrent:" -msgstr "" +msgstr "libtorrent:" #: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51 msgid "Torrent" @@ -1799,17 +1831,17 @@ msgstr "Торэнт" #: deluge/ui/gtk3/addtorrentdialog.py:232 #, python-format msgid "Add Torrents (%d)" -msgstr "" +msgstr "Дадаць торэнты (%d)" #: deluge/ui/gtk3/addtorrentdialog.py:238 msgid "Duplicate torrent(s)" -msgstr "" +msgstr "Дубліраваны(я) торрэнт(ы)" #: deluge/ui/gtk3/addtorrentdialog.py:240 #, python-format msgid "" "You cannot add the same torrent twice. %d torrents were already added." -msgstr "" +msgstr "Нельга двойчы дадаць адзін торрэнт. Ужо дададзена торрэнтаў: %d." #: deluge/ui/gtk3/addtorrentdialog.py:255 msgid "Invalid File" @@ -1818,11 +1850,11 @@ msgstr "Няправільны файл" #: deluge/ui/gtk3/addtorrentdialog.py:290 #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8 msgid "Please wait for files..." -msgstr "" +msgstr "Пачакайце файлаў..." #: deluge/ui/gtk3/addtorrentdialog.py:296 msgid "Unable to download files for this magnet" -msgstr "" +msgstr "Немагчыма спампаваць файлы для гэтай спасылкі" #: deluge/ui/gtk3/addtorrentdialog.py:694 msgid "Choose a .torrent file" @@ -1834,49 +1866,49 @@ msgstr "Няправільны URL" #: deluge/ui/gtk3/addtorrentdialog.py:778 msgid "is not a valid URL." -msgstr "" +msgstr "не карэктны URL." #: deluge/ui/gtk3/addtorrentdialog.py:784 msgid "Downloading..." -msgstr "" +msgstr "Спампоўка..." #: deluge/ui/gtk3/addtorrentdialog.py:819 msgid "Download Failed" -msgstr "Збой запампоўкі" +msgstr "Не ўдалося спампаваць" #: deluge/ui/gtk3/addtorrentdialog.py:820 msgid "Failed to download:" -msgstr "" +msgstr "Не ўдалося спампаваць:" #: deluge/ui/gtk3/dialogs.py:110 msgid "_No" -msgstr "" +msgstr "_Не" #: deluge/ui/gtk3/dialogs.py:110 msgid "_Yes" -msgstr "" +msgstr "_Так" #: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156 #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2 #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2 #: deluge/ui/gtk3/glade/connection_manager.ui.h:2 msgid "_Close" -msgstr "" +msgstr "_Закрыць" #: deluge/ui/gtk3/dialogs.py:179 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195 #: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38 msgid "Details:" -msgstr "Дадатковыя звесткі:" +msgstr "Падрабязнасці:" #: deluge/ui/gtk3/dialogs.py:200 msgid "Authenticate" -msgstr "" +msgstr "Аўтэнтыфікацыя" #: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211 #: deluge/ui/gtk3/glade/connection_manager.ui.h:3 msgid "C_onnect" -msgstr "" +msgstr "Да_лучыцца" #: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139 @@ -1904,25 +1936,25 @@ msgstr "Пароль:" #: deluge/ui/gtk3/dialogs.py:257 msgid "Edit Account" -msgstr "" +msgstr "Рэдагаваць акаўнт" #: deluge/ui/gtk3/dialogs.py:258 msgid "Edit existing account" -msgstr "" +msgstr "Рэдагаваць існуючы акаўнт" #: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38 msgid "_Apply" -msgstr "" +msgstr "_Ужыць" #: deluge/ui/gtk3/dialogs.py:270 msgid "New Account" -msgstr "" +msgstr "Новы акаўнт" #: deluge/ui/gtk3/dialogs.py:271 msgid "Create a new account" -msgstr "" +msgstr "Стварыць новы акаўнт" #: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191 @@ -1931,15 +1963,15 @@ msgstr "" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20 #: deluge/ui/gtk3/glade/connection_manager.ui.h:4 msgid "_Add" -msgstr "" +msgstr "_Дадаць" #: deluge/ui/gtk3/dialogs.py:289 msgid "Authentication Level:" -msgstr "" +msgstr "Узровень аўтэнтыфікацыі:" #: deluge/ui/gtk3/dialogs.py:423 msgid "Password Protected" -msgstr "" +msgstr "Абаронена паролем" #: deluge/ui/gtk3/dialogs.py:429 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17 @@ -1955,7 +1987,7 @@ msgstr "" #: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3 #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3 msgid "_OK" -msgstr "" +msgstr "_ОК" #: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83 msgid "Other..." @@ -1967,19 +1999,19 @@ msgstr "Не падключаны" #: deluge/ui/gtk3/statusbar.py:175 msgid "Connections (Limit)" -msgstr "" +msgstr "Падлучэнні (ліміт)" #: deluge/ui/gtk3/statusbar.py:182 msgid "Download Speed (Limit)" -msgstr "" +msgstr "Хуткасць спампоўкі (ліміт)" #: deluge/ui/gtk3/statusbar.py:189 msgid "Upload Speed (Limit)" -msgstr "" +msgstr "Хуткасць раздачы (ліміт)" #: deluge/ui/gtk3/statusbar.py:196 msgid "Protocol Traffic (Down:Up)" -msgstr "" +msgstr "Пратакольны трафік (спампоўка:раздача)" #: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234 msgid "DHT Nodes" @@ -1987,82 +2019,82 @@ msgstr "Вузлы DHT" #: deluge/ui/gtk3/statusbar.py:207 msgid "Free Disk Space" -msgstr "" +msgstr "Свабоднае месца на дыску" #: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226 msgid "External IP Address" -msgstr "" +msgstr "Знешні IP адрас" #: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409 #, python-format msgid "<b>IP</b> <small>%s</small>" -msgstr "" +msgstr "<b>IP</b> <small>%s</small>" #: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408 #: deluge/ui/console/widgets/statusbars.py:121 #: deluge/ui/web/js/deluge-all/Statusbar.js:358 msgid "n/a" -msgstr "" +msgstr "н/д" #: deluge/ui/gtk3/statusbar.py:220 msgid "<b><small>Port Issue</small></b>" -msgstr "" +msgstr "<b><small>Праблема з портам</small></b>" #: deluge/ui/gtk3/statusbar.py:222 msgid "No incoming connections, check port forwarding" -msgstr "" +msgstr "Няма ўваходзячых злучэнняў, праверце порт" #: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394 #: deluge/ui/gtk3/menubar.py:447 msgid "Download Speed Limit" -msgstr "" +msgstr "Ліміт хуткасці спампоўкі" #: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395 #: deluge/ui/gtk3/menubar.py:448 msgid "Set the maximum download speed" -msgstr "" +msgstr "Усталяваць максімум хуткасці спампоўкі" #: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409 #: deluge/ui/gtk3/menubar.py:453 msgid "Upload Speed Limit" -msgstr "" +msgstr "Ліміт хуткасці раздачы" #: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410 #: deluge/ui/gtk3/menubar.py:454 msgid "Set the maximum upload speed" -msgstr "" +msgstr "Усталяваць максімум хуткасці раздачы" #: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459 msgid "Incoming Connections" -msgstr "" +msgstr "Уваходныя злучэнні" #: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460 msgid "Set the maximum incoming connections" -msgstr "" +msgstr "Усталяваць максімум уваходных злучэнняў" #: deluge/ui/gtk3/tab_data_funcs.py:28 #, python-brace-format msgid "{state} {percent}%" -msgstr "" +msgstr "{state} {percent}%" #: deluge/ui/gtk3/tab_data_funcs.py:30 #, python-brace-format msgid "{state}: {err_msg}" -msgstr "" +msgstr "{state}: {err_msg}" #: deluge/ui/gtk3/tab_data_funcs.py:42 #: deluge/ui/gtk3/torrentview_data_funcs.py:284 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:74 msgid "Never" -msgstr "" +msgstr "Ніколі" #: deluge/ui/gtk3/tab_data_funcs.py:96 msgid "Yes" -msgstr "" +msgstr "Так" #: deluge/ui/gtk3/tab_data_funcs.py:96 msgid "No" -msgstr "" +msgstr "Не" #: deluge/ui/gtk3/files_tab.py:140 #: deluge/ui/web/js/deluge-all/details/FilesTab.js:48 @@ -2071,17 +2103,17 @@ msgstr "Прыярытэт" #: deluge/ui/gtk3/torrentdetails.py:142 msgid "_All" -msgstr "" +msgstr "_Усе" #: deluge/ui/gtk3/torrentdetails.py:143 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15 msgid "_Status" -msgstr "_Стан" +msgstr "_Статус" #: deluge/ui/gtk3/torrentdetails.py:144 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26 msgid "_Details" -msgstr "_Падрабязнасьці" +msgstr "Паз_драбязнасці" #: deluge/ui/gtk3/torrentdetails.py:145 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27 @@ -2092,22 +2124,22 @@ msgstr "_Файлы" #: deluge/ui/gtk3/torrentdetails.py:146 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28 msgid "_Peers" -msgstr "Піры" +msgstr "_Піры" #: deluge/ui/gtk3/torrentdetails.py:147 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45 #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36 msgid "_Options" -msgstr "_Налады" +msgstr "_Опцыі" #: deluge/ui/gtk3/torrentdetails.py:148 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52 msgid "_Trackers" -msgstr "" +msgstr "_Трэкеры" #: deluge/ui/gtk3/systemtray.py:184 msgid "Not Connected..." -msgstr "" +msgstr "Не злучана..." #: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239 #: deluge/ui/web/js/deluge-all/Statusbar.js:73 @@ -2118,7 +2150,7 @@ msgstr "" #: deluge/ui/web/js/deluge-all/Menus.js:199 #: deluge/ui/web/js/deluge-all/Menus.js:244 msgid "Unlimited" -msgstr "Без абмежаванняў" +msgstr "Неабмежавана" #: deluge/ui/gtk3/systemtray.py:245 #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39 @@ -2127,7 +2159,7 @@ msgstr "Без абмежаванняў" #: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85 #: deluge/ui/web/js/deluge-all/Menus.js:298 msgid "Down" -msgstr "Запампоўка" +msgstr "Спампоўка" #: deluge/ui/gtk3/systemtray.py:248 #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37 @@ -2144,97 +2176,106 @@ msgid "" "A Deluge daemon (deluged) is already running.\n" "To use Standalone mode, stop local daemon and restart Deluge." msgstr "" +"Дэман Deluge (deluged) ужо запушчаны.\n" +"Каб перайсці ў аўтаномны рэжым, спыніце лакальны дэман і перазапусціце " +"Deluge." #: deluge/ui/gtk3/gtkui.py:319 msgid "" "Only Thin Client mode is available because libtorrent is not installed.\n" "To use Standalone mode, please install libtorrent package." msgstr "" +"Даступны толькі тонкі кліент, таму што libtorrent не ўсталяваны.\n" +"Каб перайсці ў аўтаномны рэжым, усталюйце пакет libtorrent." #: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331 msgid "" "Only Thin Client mode is available due to unknown Import Error.\n" "To use Standalone mode, please see logs for error details." msgstr "" +"Даступны толькі тонкі кліент з-за невядомай памылкі імпарту.\n" +"Каб перайсці ў аўтаномны рэжым, паглядзіце лог з памылкамі." #: deluge/ui/gtk3/gtkui.py:349 msgid "Continue in Thin Client mode?" -msgstr "" +msgstr "Працягнуць у рэжыме тонкага кліента?" #: deluge/ui/gtk3/gtkui.py:350 msgid "Change User Interface Mode" -msgstr "" +msgstr "Змяніць рэжым інтэрейса карыстальніка" #: deluge/ui/gtk3/connectionmanager.py:52 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:56 msgid "Offline" -msgstr "Ня ў сеціве" +msgstr "Па-за сеткай" #: deluge/ui/gtk3/connectionmanager.py:53 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:53 msgid "Online" -msgstr "У сеціве" +msgstr "У сетцы" #: deluge/ui/gtk3/connectionmanager.py:54 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:59 msgid "Connected" -msgstr "Падключаны" +msgstr "Злучана" #: deluge/ui/gtk3/connectionmanager.py:110 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:48 #: deluge/ui/web/js/deluge-all/details/StatusTab.js:17 msgid "Status" -msgstr "" +msgstr "Статус" #: deluge/ui/gtk3/connectionmanager.py:115 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:66 msgid "Host" -msgstr "" +msgstr "Хост" #: deluge/ui/gtk3/connectionmanager.py:122 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:73 msgid "Version" -msgstr "" +msgstr "Версія" #: deluge/ui/gtk3/connectionmanager.py:219 #: deluge/ui/gtk3/glade/connection_manager.ui.h:8 msgid "_Start Daemon" -msgstr "" +msgstr "_Запусціць дэман" #: deluge/ui/gtk3/connectionmanager.py:250 msgid "_Stop Daemon" -msgstr "" +msgstr "_Спыніць дэман" #: deluge/ui/gtk3/connectionmanager.py:255 msgid "_Disconnect" -msgstr "" +msgstr "_Адлучыць" #: deluge/ui/gtk3/connectionmanager.py:280 msgid "Unable to start daemon!" -msgstr "" +msgstr "Немагчыма запусціць дэман!" #: deluge/ui/gtk3/connectionmanager.py:281 msgid "Check deluged package is installed and logs for further details" -msgstr "" +msgstr "Праверце ўсталяванне пакета і логі для падрабязнасцей" #: deluge/ui/gtk3/connectionmanager.py:332 msgid "Incompatible Client" -msgstr "" +msgstr "Несумяшчальны кліент" #: deluge/ui/gtk3/connectionmanager.py:343 msgid "" "Auto-starting the daemon locally is not enabled. See \"Options\" on the " "\"Connection Manager\"." msgstr "" +"Лакальны аўтазапуск дэмана не ўключаны. Глядзіце \"Опцыі\" ў \"Кіраванні " +"злучэннямі\"." #: deluge/ui/gtk3/connectionmanager.py:346 msgid "Failed To Connect" -msgstr "" +msgstr "Памылка злучэння" #: deluge/ui/gtk3/connectionmanager.py:403 msgid "Edit Host" -msgstr "" +msgstr "Рэдагаваць хост" #: deluge/ui/gtk3/connectionmanager.py:428 msgid "Error Adding Host" @@ -2242,18 +2283,18 @@ msgstr "Збой дадання хосту" #: deluge/ui/gtk3/connectionmanager.py:464 msgid "Error Updating Host" -msgstr "" +msgstr "Памылка рэдагавання хосту" #: deluge/ui/gtk3/preferences.py:131 #: deluge/ui/console/cmdline/commands/connect.py:33 #: deluge/ui/console/modes/preferences/preference_panes.py:651 msgid "Username" -msgstr "" +msgstr "Імя карыстальніка" #: deluge/ui/gtk3/preferences.py:135 #: deluge/ui/console/modes/preferences/preference_panes.py:399 msgid "Level" -msgstr "" +msgstr "Узровень" #: deluge/ui/gtk3/preferences.py:159 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2 @@ -2264,106 +2305,106 @@ 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 msgid "Plugin" -msgstr "Модуль" +msgstr "Плагін" #: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886 msgid "Attention" -msgstr "" +msgstr "Увага" #: deluge/ui/gtk3/preferences.py:876 msgid "You must choose a language" -msgstr "" +msgstr "Вы павінны выбраць мову" #: deluge/ui/gtk3/preferences.py:887 msgid "You must now restart the deluge UI for the changes to take effect." -msgstr "" +msgstr "Вы павінны перазапусціць UI праграмы каб прымяніць змены." #: deluge/ui/gtk3/preferences.py:940 msgid "Thinclient" -msgstr "" +msgstr "Тонкі кліент" #: deluge/ui/gtk3/preferences.py:940 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18 msgid "Standalone" -msgstr "" +msgstr "Аўтаномны" #: deluge/ui/gtk3/preferences.py:942 msgid "Switching Deluge Client Mode..." -msgstr "" +msgstr "Пераключэнне рэжыму кліента Deluge..." #: deluge/ui/gtk3/preferences.py:943 #, python-format msgid "Do you want to restart to use %s mode?" -msgstr "" +msgstr "Жадаеце перазапусціць у рэжыме %s?" #: deluge/ui/gtk3/preferences.py:1154 msgid "Select the Plugin" -msgstr "Выберыце модуль" +msgstr "Выберыце плагін" #: deluge/ui/gtk3/preferences.py:1170 msgid "Plugin Eggs" -msgstr "Модулі Egg" +msgstr "Плагін Egg" #: deluge/ui/gtk3/preferences.py:1297 msgid "Server Side Error" -msgstr "" +msgstr "Памылка сервера" #: deluge/ui/gtk3/preferences.py:1298 msgid "An error occurred on the server" -msgstr "" +msgstr "Памылка на серверы" #: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375 msgid "Error Adding Account" -msgstr "" +msgstr "Памылка дадання акаўнта" #: deluge/ui/gtk3/preferences.py:1369 msgid "Authentication failed" -msgstr "" +msgstr "Памылка аўтэнтыфікацыі" #: deluge/ui/gtk3/preferences.py:1376 msgid "An error occurred while adding account" -msgstr "" +msgstr "Памылка падчас дадання акаўнта" #: deluge/ui/gtk3/preferences.py:1408 msgid "Error Updating Account" -msgstr "" +msgstr "Памылка абнаўлення акаўнта" #: deluge/ui/gtk3/preferences.py:1409 msgid "An error occurred while updating account" -msgstr "" +msgstr "Памылка падчас абнаўлення акаўнта" #: deluge/ui/gtk3/preferences.py:1427 msgid "Remove Account" -msgstr "" +msgstr "Выдаліць акаўнт" #: deluge/ui/gtk3/preferences.py:1429 #, python-format msgid "" "Are you sure you want to remove the account with the username " "\"%(username)s\"?" -msgstr "" +msgstr "Сапраўды жадаеце выдаліць акаўнт з іменем \"%(username)s\"?" #: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448 msgid "Error Removing Account" -msgstr "" +msgstr "Памылка выдаляння акаўнта" #: deluge/ui/gtk3/preferences.py:1442 msgid "Auhentication failed" -msgstr "" +msgstr "Памылка аўтэнтыфікацыі" #: deluge/ui/gtk3/preferences.py:1449 msgid "An error occurred while removing account" -msgstr "" +msgstr "Памылка падчас выдалення акаўнта" #: deluge/ui/gtk3/filtertreeview.py:122 #: deluge/ui/web/js/deluge-all/FilterPanel.js:28 msgid "States" -msgstr "" +msgstr "Станы" #: deluge/ui/gtk3/filtertreeview.py:128 #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23 @@ -2376,29 +2417,29 @@ msgstr "Трэкеры" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33 msgid "None" -msgstr "Адсутнічае" +msgstr "Няма" #: deluge/ui/gtk3/filtertreeview.py:137 msgid "Admin" -msgstr "" +msgstr "Адмін" #: deluge/ui/gtk3/filtertreeview.py:159 #: deluge/ui/web/js/deluge-all/FilterPanel.js:34 msgid "Labels" -msgstr "" +msgstr "Ярлыкі" #: deluge/ui/gtk3/filtertreeview.py:204 #: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28 msgid "No Label" -msgstr "" +msgstr "Без ярлыка" #: deluge/ui/gtk3/filtertreeview.py:206 msgid "No Owner" -msgstr "" +msgstr "Няма ўласніка" #: deluge/ui/gtk3/new_release_dialog.py:60 msgid "<i>Client Version</i>" -msgstr "" +msgstr "<i>Версія кліента</i>" #: deluge/ui/gtk3/queuedtorrents.py:118 msgid " Torrents Queued" @@ -2406,20 +2447,20 @@ msgstr " Торэнты пастаўлены ў чаргу" #: deluge/ui/gtk3/queuedtorrents.py:120 msgid " Torrent Queued" -msgstr " Тарэнт пастаўлены ў чаргу" +msgstr " Торэнт пастаўлены ў чаргу" #: deluge/ui/gtk3/torrentview.py:421 msgid "Torrent is shared between other Deluge users or not." -msgstr "" +msgstr "Торэнт агульны ці не з іншымі карыстальнікамі Deluge." #: deluge/ui/gtk3/removetorrentdialog.py:67 msgid "Remove the selected torrents?" -msgstr "" +msgstr "Выдаліць вылучаныя торэнты?" #: deluge/ui/gtk3/removetorrentdialog.py:68 #, python-format msgid "Total of %s torrents selected" -msgstr "" +msgstr "Усяго вылучана торэнтаў: %s" #: deluge/ui/gtk3/menubar.py:79 msgid "Set Unlimited" @@ -2427,39 +2468,39 @@ msgstr "Неабмежавана" #: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259 msgid "On" -msgstr "Укл." +msgstr "Уключана" #: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265 msgid "Off" -msgstr "Адкл." +msgstr "Выключана" #: deluge/ui/gtk3/menubar.py:101 msgid "Disable" -msgstr "" +msgstr "Выключыць" #: deluge/ui/gtk3/menubar.py:104 msgid "Enable..." -msgstr "" +msgstr "Уключыць..." #: deluge/ui/gtk3/menubar.py:465 msgid "Peer Upload Slots" -msgstr "" +msgstr "Слоты піраў раздачы" #: deluge/ui/gtk3/menubar.py:466 msgid "Set the maximum upload slots" -msgstr "" +msgstr "Усталяваць максімум слотаў раздачы" #: deluge/ui/gtk3/menubar.py:471 msgid "Stop Seed At Ratio" -msgstr "" +msgstr "Спыніць сіды па рэйтынгу" #: deluge/ui/gtk3/menubar.py:606 msgid "Ownership Change Error" -msgstr "" +msgstr "Памылка змены ўласніка" #: deluge/ui/gtk3/menubar.py:607 msgid "There was an error while trying changing ownership." -msgstr "" +msgstr "Памылка падчас спробы змяніць ўласніка." #: deluge/ui/gtk3/peers_tab.py:91 #: deluge/ui/web/js/deluge-all/details/PeersTab.js:66 @@ -2473,13 +2514,15 @@ msgstr "Кліент" #: deluge/ui/gtk3/__init__.py:29 msgid "GTK Options" -msgstr "" +msgstr "Опцыі GTK" #: deluge/ui/gtk3/__init__.py:36 msgid "" "Add one or more torrent files, torrent URLs or magnet URIs to a currently " "running Deluge GTK instance" msgstr "" +"Дадаць адзін ці больш торэнт-файлаў, URL-аў ці URI-спасылак у запушчаны " +"цяпер Deluge GTK" #: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1 msgid "Creating Torrent" @@ -2491,7 +2534,7 @@ msgstr "Торэнты ў чарзе" #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4 msgid "Add Queued Torrents" -msgstr "" +msgstr "Дадаць торэнты ў чарзе" #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5 #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7 @@ -2503,7 +2546,7 @@ msgstr "_Выдаліць" #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6 msgid "_Clear" -msgstr "" +msgstr "А_чысціць" #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7 msgid "Automatically add torrents on connect" @@ -2526,7 +2569,7 @@ msgstr "_Стварыць торэнт" #: deluge/ui/gtk3/glade/main_window.ui.h:4 msgid "Quit & _Shutdown Daemon" -msgstr "" +msgstr "Выйсці і вы_ключыць дэман" #: deluge/ui/gtk3/glade/main_window.ui.h:5 #: deluge/ui/gtk3/glade/tray_menu.ui.h:8 @@ -2538,11 +2581,11 @@ msgstr "В_ыхад" #: deluge/ui/gtk3/glade/edit_trackers.ui.h:6 #: deluge/ui/gtk3/glade/connection_manager.ui.h:5 msgid "_Edit" -msgstr "_Змяніць" +msgstr "_Рэдагаваць" #: deluge/ui/gtk3/glade/main_window.ui.h:7 msgid "_Preferences" -msgstr "" +msgstr "_Налады" #: deluge/ui/gtk3/glade/main_window.ui.h:8 msgid "_Connection Manager" @@ -2558,7 +2601,7 @@ msgstr "_Выгляд" #: deluge/ui/gtk3/glade/main_window.ui.h:11 msgid "_Toolbar" -msgstr "Панэль _прыладаў" +msgstr "Панэль _прылад" #: deluge/ui/gtk3/glade/main_window.ui.h:12 msgid "_Sidebar" @@ -2578,7 +2621,7 @@ msgstr "_Калонкі" #: deluge/ui/gtk3/glade/main_window.ui.h:16 msgid "_Find ..." -msgstr "" +msgstr "_Знайсці ..." #: deluge/ui/gtk3/glade/main_window.ui.h:17 msgid "S_idebar" @@ -2594,7 +2637,7 @@ msgstr "Паказваць _трэкеры" #: deluge/ui/gtk3/glade/main_window.ui.h:20 msgid "Show _Owners" -msgstr "" +msgstr "Паказваць у_ласнікаў" #: deluge/ui/gtk3/glade/main_window.ui.h:21 msgid "_Help" @@ -2602,11 +2645,11 @@ msgstr "_Даведка" #: deluge/ui/gtk3/glade/main_window.ui.h:22 msgid "_Homepage" -msgstr "" +msgstr "_Хатняя старонка" #: deluge/ui/gtk3/glade/main_window.ui.h:23 msgid "_FAQ" -msgstr "" +msgstr "_Частыя пытанні" #: deluge/ui/gtk3/glade/main_window.ui.h:24 msgid "Frequently Asked Questions" @@ -2614,11 +2657,11 @@ msgstr "Частыя пытанні" #: deluge/ui/gtk3/glade/main_window.ui.h:25 msgid "_Community" -msgstr "" +msgstr "_Супольнасць" #: deluge/ui/gtk3/glade/main_window.ui.h:26 msgid "_About" -msgstr "" +msgstr "_Аб праграме" #: deluge/ui/gtk3/glade/main_window.ui.h:27 msgid "Add torrent" @@ -2631,7 +2674,7 @@ msgstr "Дадаць торэнт" #: deluge/ui/gtk3/glade/main_window.ui.h:29 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221 msgid "Remove torrent" -msgstr "" +msgstr "Выдаліць торэнт" #: deluge/ui/gtk3/glade/main_window.ui.h:30 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105 @@ -2647,10 +2690,12 @@ msgid "" "Filter torrents by name.\n" "This will filter torrents for the current selection on the sidebar." msgstr "" +"Фільтраваць торэнты па імені.\n" +"Гэта адфільтруе торэнты паводле бягучага адбора на бакавой панэлі." #: deluge/ui/gtk3/glade/main_window.ui.h:33 msgid "Filter" -msgstr "" +msgstr "Фільтр" #: deluge/ui/gtk3/glade/main_window.ui.h:34 msgid "Pause the selected torrents" @@ -2660,7 +2705,7 @@ msgstr "Прыпыніць вылучаныя торэнты" #: deluge/ui/web/js/deluge-all/Toolbar.js:54 #: deluge/ui/web/js/deluge-all/Menus.js:52 msgid "Pause" -msgstr "Паўза" +msgstr "Прыпыніць" #: deluge/ui/gtk3/glade/main_window.ui.h:36 msgid "Resume the selected torrents" @@ -2674,7 +2719,7 @@ msgstr "Працягнуць" #: deluge/ui/gtk3/glade/main_window.ui.h:38 msgid "Queue Torrent Up" -msgstr "Перанесьці торэнт уверх" +msgstr "Перанесці торэнт уверх" #: deluge/ui/gtk3/glade/main_window.ui.h:39 msgid "Queue Up" @@ -2682,7 +2727,7 @@ msgstr "Вышэй" #: deluge/ui/gtk3/glade/main_window.ui.h:40 msgid "Queue Torrent Down" -msgstr "Перанесьці торэнт уніз" +msgstr "Перанесці торэнт уніз" #: deluge/ui/gtk3/glade/main_window.ui.h:41 msgid "Queue Down" @@ -2693,14 +2738,14 @@ msgstr "Ніжэй" #: deluge/ui/web/js/deluge-all/Toolbar.js:84 #: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24 msgid "Preferences" -msgstr "Налады" +msgstr "Параметры" #: deluge/ui/gtk3/glade/main_window.ui.h:43 #: deluge/ui/gtk3/glade/connection_manager.ui.h:1 #: deluge/ui/web/js/deluge-all/Toolbar.js:91 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:21 msgid "Connection Manager" -msgstr "Кіраванне злучэньнямі" +msgstr "Кіраванне злучэннямі" #: deluge/ui/gtk3/glade/main_window.ui.h:44 #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2 @@ -2711,19 +2756,19 @@ msgstr "Кіраванне злучэньнямі" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211 #: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86 msgid "Close" -msgstr "" +msgstr "Закрыць" #: deluge/ui/gtk3/glade/main_window.ui.h:45 msgid "Filter:" -msgstr "" +msgstr "Фільтр:" #: deluge/ui/gtk3/glade/main_window.ui.h:46 msgid "Clear the search" -msgstr "" +msgstr "Ачысціць пошук" #: deluge/ui/gtk3/glade/main_window.ui.h:47 msgid "_Match Case" -msgstr "" +msgstr "_Улічваць рэгістр літар" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1 #: deluge/ui/console/modes/preferences/preference_panes.py:383 @@ -2731,7 +2776,7 @@ msgstr "" #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66 msgid "Forced" -msgstr "" +msgstr "Прымусова" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3 #: deluge/ui/console/modes/preferences/preference_panes.py:383 @@ -2739,71 +2784,71 @@ msgstr "" #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68 msgid "Disabled" -msgstr "" +msgstr "Адключана" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4 #: deluge/ui/console/modes/preferences/preference_panes.py:400 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87 msgid "Handshake" -msgstr "" +msgstr "Рукапацісканне" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5 #: deluge/ui/console/modes/preferences/preference_panes.py:400 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88 msgid "Full Stream" -msgstr "" +msgstr "Поўная плынь" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6 #: deluge/ui/console/modes/preferences/preference_panes.py:400 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89 msgid "Either" -msgstr "" +msgstr "Любы" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34 msgid "Socks4" -msgstr "" +msgstr "Socks4" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35 msgid "Socks5" -msgstr "" +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 Auth" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37 msgid "HTTP" -msgstr "" +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 Auth" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39 msgid "I2P" -msgstr "" +msgstr "I2P" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19 msgid "The standalone self-contained application" -msgstr "" +msgstr "Аўтаномная самастойная праграма" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20 msgid "Thin Client" -msgstr "" +msgstr "Тонкі кліент" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21 msgid "Connect to a Deluge daemon (deluged)" -msgstr "" +msgstr "Злучыцца з дэманам Deluge (deluged)" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22 msgid "Application Mode" -msgstr "" +msgstr "Рэжым праграмы" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23 #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46 @@ -2812,7 +2857,7 @@ msgstr "Паказваць хуткасць у загалоўку праграм #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24 msgid "Focus window when adding torrent" -msgstr "" +msgstr "Факусіраваць на акне пры даданні торэнта" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25 msgid "" @@ -2820,45 +2865,48 @@ msgid "" "will increase bandwidth use between client\n" "and daemon (does not apply in Standalone mode)." msgstr "" +"Паласа паказу частак\n" +"павялічыць прапускную здольнасць паміж кліентам\n" +"і дэманам (не дзейнічае ў аўтаномным рэжыме)." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28 msgid "Show a pieces bar in Status tab" -msgstr "" +msgstr "Паказваць паласу частак на панэлі стану" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25 #: deluge/ui/web/render/tab_status.html:27 msgid "Completed:" -msgstr "" +msgstr "Завершана:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72 msgid "Downloading:" -msgstr "" +msgstr "Спампоўка:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31 msgid "Waiting:" -msgstr "" +msgstr "Чаканне:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32 msgid "Missing:" -msgstr "" +msgstr "Згублена:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33 msgid "_Revert" -msgstr "" +msgstr "_Вярнуць" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34 msgid "Revert color to default" -msgstr "" +msgstr "Вярнуць зыходны колер" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35 msgid "Piece Colors" -msgstr "" +msgstr "Колеры частак" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36 msgid "Main Window" -msgstr "" +msgstr "Галоўнае акно" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37 msgid "Enable system tray icon" @@ -2866,11 +2914,11 @@ msgstr "Уключыць значок у сістэмным трэі" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38 msgid "App Indicator" -msgstr "" +msgstr "Індыкатар праграмы" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39 msgid "Systray" -msgstr "" +msgstr "Сістэмны трэй" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40 msgid "Minimize to tray on close" @@ -2886,25 +2934,25 @@ msgstr "Абараніць паролем вобласць апавяшчэнн #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44 msgid "System Tray" -msgstr "" +msgstr "Сістэмны трэй" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45 msgid "Notify about new releases" -msgstr "" +msgstr "Апавяшчаць аб новых рэлізах" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46 #: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38 msgid "Updates" -msgstr "" +msgstr "Абнаўленні" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47 #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235 msgid "System Default" -msgstr "" +msgstr "Сістэмныя налады па змаўчанні" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48 msgid "<b>Language</b>" -msgstr "" +msgstr "<b>Мова</b>" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49 #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16 @@ -2922,36 +2970,36 @@ msgstr "Капіяваць файлы .torrent ў:" #: deluge/ui/console/modes/preferences/preference_panes.py:275 #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19 msgid "Delete copy of torrent file on remove" -msgstr "" +msgstr "Выдаляць копіі торэнт-файлаў" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52 msgid "" "Delete the copy of the torrent file created when the torrent is removed" -msgstr "" +msgstr "Выдаляць копію торэнт-файла пры выдаленні торэнта" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53 msgid "Download to:" -msgstr "Запампоўваць у:" +msgstr "Спампоўваць у:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54 msgid "Download Folders" -msgstr "" +msgstr "Папкі спампоўкі" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93 msgid "Prioritize first and last pieces of torrent" -msgstr "Прыярытэт у першай і апошняй частак торэнта" +msgstr "Прыярытэт першай і апошняй частак торэнта" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56 msgid "Prioritize first and last pieces of files in torrent" -msgstr "Прыярытэт у першай і апошняй частак файлаў торэнта" +msgstr "Прыярытэт першай і апошняй частак файлаў у торэнце" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57 #: deluge/ui/console/modes/preferences/preference_panes.py:287 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102 msgid "Sequential download" -msgstr "" +msgstr "Паслядоўная спампоўка" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58 #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15 @@ -2963,6 +3011,12 @@ msgid "" "distribution negatively in the swarm. It should be\n" "used sparingly." msgstr "" +"Калі ўключана, чаткі будуць падбірацца\n" +"паслядоўна замест \"спачатку самы рэдкі\".\n" +"\n" +"Уключэнне паслядоўнай спампоўкі ў цэлым адмоўна\n" +"на атрыманне частак падзейнічае. Трэба\n" +"выкарыстоўваць ашчадна." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111 @@ -2972,15 +3026,15 @@ msgstr "Дадаваць торэнты ў спыненым стане" #: 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 "Рэзерваваць месца на дыску" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66 msgid "Pre-allocate the disk space for the torrent files" -msgstr "" +msgstr "Рэзерваваць месца на дыску для торэнт-файлаў" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67 msgid "Add Torrent Options" -msgstr "" +msgstr "Опцыі дадання торэнта" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68 msgid "Always show" @@ -2992,15 +3046,15 @@ msgstr "Зрабіць дыялогавае акно актыўным" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70 msgid "Add Torrents Dialog" -msgstr "" +msgstr "Дыялог дадання торэнта" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71 msgid "Connection Attempts per Second:" -msgstr "" +msgstr "Спробы злучыцца ў секунду:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72 msgid "Half-Open Connections:" -msgstr "" +msgstr "Паў-адкрытае злучэнне:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73 msgid "The maximum number of connections allowed. Set -1 for unlimited." @@ -3025,24 +3079,24 @@ 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 "Слоты раздачы:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77 msgid "The maximum download speed for all torrents. Set -1 for unlimited." msgstr "" -"Максімальная хуткасць прыёму для ўсіх торэнтаў. Для неабмежаванай усталюйце -" -"1." +"Максімальная хуткасць спампоўкі для ўсіх торэнтаў. Для неабмежаванай " +"усталюйце -1." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41 #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7 msgid "Download Speed:" -msgstr "Хуткасць запампоўкі:" +msgstr "Хуткасць спампоўкі:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79 msgid "The maximum upload speed for all torrents. Set -1 for unlimited." msgstr "" -"Максімальная хуткасць запампоўкі для ўсіх торэнтаў. Для неабмежаванай " +"Максімальная хуткасць спампоўкі для ўсіх торэнтаў. Для неабмежаванай " "усталюйце -1." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81 @@ -3072,7 +3126,7 @@ msgstr "" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85 msgid "Global Bandwidth Limits" -msgstr "" +msgstr "Глабальныя ліміты прапускной здольнасці" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86 msgid "The maximum upload slots per torrent. Set -1 for unlimited." @@ -3088,62 +3142,66 @@ msgstr "" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88 msgid "The maximum number download speed per torrent. Set -1 for unlimited." msgstr "" +"Максімальная хуткасць спампоўкі на торэнт. Для неабмежаванай усталюйце -1." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89 msgid "The maximum upload speed per torrent. Set -1 for unlimited." msgstr "" +"Максімальная хуткасць раздачы на торэнт. Для неабмежаванай усталюйце -1." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90 msgid "Per-Torrent Bandwidth Limits" -msgstr "" +msgstr "Ліміты прапускной здольнасці на торэнт" #: 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 "Падняць у чарзе" #: 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 "Новыя торэнты" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85 msgid "Seeding:" -msgstr "" +msgstr "Сідаванне:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59 msgid "Total:" -msgstr "" +msgstr "Усяго:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102 msgid "Ignore slow torrents" -msgstr "" +msgstr "Ігнараваць марудныя торэнты" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96 msgid "" "Torrents not transfering any data do not count towards download/seeding " "active count." msgstr "" +"Торэнты без перадачы даных не ўлічваюцца пры падліку актыўных " +"спамповак/сідавання." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111 msgid "Prefer seeding torrents" -msgstr "" +msgstr "Пераважнае сідаванне торэнтаў" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98 msgid "Give preference to seeding torrents over downloading torrents." -msgstr "" +msgstr "Аддайваць перавагу сідаванню торэнтаў над спампоўкай." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99 #: deluge/ui/console/modes/preferences/preference_panes.py:558 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50 msgid "Active Torrents" -msgstr "" +msgstr "Актыўныя торэнты" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7 @@ -3151,52 +3209,54 @@ 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 msgid "Time (m):" -msgstr "" +msgstr "Час (хв):" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103 #: 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" -msgstr "" +msgstr "Прыпыніць торэнт" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106 #: 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 "" "The IP address of the interface to listen for incoming bittorrent " "connections on. Leave this empty if you want to use the default." msgstr "" +"IP адрас інтэрфейса для праслухоўвання ўваходзячых злучэнняў bittorrent. " +"Пакіньце пустым каб выкарыстоўваць значэнне па змаўчанні." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38 msgid "Incoming Address" -msgstr "" +msgstr "Уваходзячы адрас" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109 msgid "Random" -msgstr "" +msgstr "Выпадковы" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110 msgid "Uses random ports in range 49152 to 65525" -msgstr "" +msgstr "Выкарыстоўвае выпадковы порт паміж 49152 і 65525" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111 msgid "Active Port:" @@ -3209,7 +3269,7 @@ msgstr "Праверыць актыўны порт" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58 msgid "Incoming Port" -msgstr "" +msgstr "Уваходзячы порт" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114 msgid "" @@ -3218,12 +3278,16 @@ msgid "" "connections. (Leave empty for default.)\n" " " msgstr "" +"\n" +"Сеткавы інтэрфейс ці IP адрас для зыходзячых злучэнняў BitTorrent. (Пакіньце " +"пустым каб выкарыстоўваць перадвызначаны.)\n" +" " #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117 #: deluge/ui/console/modes/preferences/preference_panes.py:359 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101 msgid "Outgoing Interface" -msgstr "" +msgstr "Зыходзячы інтэрфейс" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118 #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11 @@ -3240,17 +3304,17 @@ msgstr "Да:" #: deluge/ui/console/modes/preferences/preference_panes.py:328 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120 msgid "Outgoing Ports" -msgstr "" +msgstr "Зыходзячыя парты" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59 msgid "Outgoing:" -msgstr "" +msgstr "Зыходзячы:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38 msgid "Incoming:" -msgstr "" +msgstr "Уваходзячы:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80 @@ -3261,7 +3325,7 @@ msgstr "Узровень:" #: deluge/ui/console/modes/preferences/preference_panes.py:379 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18 msgid "Encryption" -msgstr "" +msgstr "Шыфраванне" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194 @@ -3288,7 +3352,7 @@ msgstr "Абмен пірамі" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130 msgid "Exchanges peers between clients. (Disabling requires restart)" -msgstr "" +msgstr "Абмен пірамі паміж кліентамі. (Адключэнне патрабуе перазапуску)" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223 @@ -3319,7 +3383,7 @@ msgstr "TOS-байт піра:" #: deluge/ui/console/modes/preferences/preference_panes.py:372 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181 msgid "Network Extras" -msgstr "" +msgstr "Сетка дадаткова" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137 #: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4 @@ -3343,68 +3407,72 @@ msgstr "Порт:" #: deluge/ui/console/modes/preferences/preference_panes.py:658 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94 msgid "Proxy Hostnames" -msgstr "" +msgstr "Назва хаста проксі" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141 msgid "" "Hostnames should be attempted to be resolved through\n" "the proxy instead of using the local DNS service" msgstr "" +"Назвы хаста трэба спрабаваць выправіць праз проксі\n" +"замест таго, каб выкарыстоўваць лакальны сэрвіс DNS" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143 #: deluge/ui/console/modes/preferences/preference_panes.py:661 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103 msgid "Proxy Peers" -msgstr "" +msgstr "Проксі піры" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144 msgid "Proxy peer and web seed connections." -msgstr "" +msgstr "Злучэнне праз проксі піры і вэб сід." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145 #: deluge/ui/console/modes/preferences/preference_panes.py:665 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112 msgid "Proxy Trackers" -msgstr "" +msgstr "Проксі трэкеры" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147 msgid "Force Proxy Use" -msgstr "" +msgstr "Прымусовае выкарыстанне проксі" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148 #: 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 "" "Attempt to hide client identity and only use proxy for incoming connections." msgstr "" +"Спрабаваць хаваць ідэнтычнасць кліента і выкарыстоўваць толькі проксі для " +"ўваходзячых злучэнняў." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150 #: deluge/ui/console/modes/preferences/preference_panes.py:668 #: deluge/ui/console/modes/preferences/preference_panes.py:669 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120 msgid "Force Proxy" -msgstr "" +msgstr "Прымусовае проксі" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151 msgid "Cache Size (16 KiB blocks):" -msgstr "Памер кэшу (у блоках па 16 КБ):" +msgstr "Памер кэшу (у блоках па 16 КіБ):" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152 msgid "" "The number of seconds from the last cached write to a piece in the write " "cache, to when it's forcefully flushed to disk. Default is 60 seconds." msgstr "" -"Час (у секундах) ад апошняга кэшыраваннага запісу часткі ў кэше запісу да " +"Час у секундах ад апошняга кэшыраваннага запісу часткі ў кэшы запісу да " "таго, як прымусова скідаць кэш гэтай часткі на дыск. Па змаўчанні 60 секунд." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153 #: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53 msgid "Cache Expiry (seconds):" -msgstr "Час жыцця кэшу (секунд):" +msgstr "Час жыцця кэша (секунд):" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154 #: deluge/ui/console/modes/preferences/preference_panes.py:694 @@ -3412,7 +3480,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 "" @@ -3442,9 +3510,9 @@ msgid "" "of saved write operations per total write operations, i.e. a kind of cache " "hit ratio for the write cache." msgstr "" -"Суадноснасць (блокаў_запісана - аперацый_запісу) / блокаў_запісана " -"прадстаўляе суадноснасць колькасці захаваных аперацый запісу да іх агульнай " -"колькасці, г.зн. эфектыўнасць кэша запісу." +"Суадносіны (блокаў_запісана - аперацый_запісу) / блокаў_запісана прадстаўляе " +"суадноснасць колькасці захаваных аперацый запісу да іх агульнай колькасці, " +"г.зн. эфектыўнасць кэша запісу." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160 msgid "Write Cache Hit Ratio:" @@ -3453,7 +3521,7 @@ msgstr "Працэнт траплення ў кэш:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161 #: deluge/ui/console/modes/preferences/preference_panes.py:709 msgid "Write" -msgstr "" +msgstr "Запісаць" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162 msgid "" @@ -3461,7 +3529,7 @@ msgid "" "peers), that were served from disk or cache." msgstr "" "Колькасць блокаў, запытаных рухавіком BitTorrent (ад піраў) і счытаных з " -"дыска ці з кэшу." +"дыска ці з кэша." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163 msgid "Blocks Read:" @@ -3469,42 +3537,42 @@ msgstr "Блокаў счытана:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164 msgid "The number of blocks that were served from cache." -msgstr "Колькасць блокаў, счытаных з кэшу." +msgstr "Колькасць блокаў, счытаных з кэша." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165 msgid "Blocks Read Hit:" -msgstr "Счытана блокаў з кэшу:" +msgstr "Счытана блокаў з кэша:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166 msgid "The cache hit ratio for the read cache." -msgstr "Каэфіцыент эфектыўнасці кэшу счытывання." +msgstr "Каэфіцыент эфектыўнасці кэша счытвання." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167 msgid "Read Cache Hit Ratio:" -msgstr "Працэнт счытываньня з кэшу:" +msgstr "Працэнт счытвання з кэша:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168 msgid "" "The total number of read operations performed since this session was started." msgstr "" -"Агульная колькасць аперацый счытываання, выкананых з пачатку гэтай сесіі." +"Агульная колькасць аперацый счытвання, выкананых з пачатку гэтай сесіі." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169 msgid "Reads:" -msgstr "Аперацый счытывання:" +msgstr "Аперацый счытвання:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170 #: deluge/ui/console/modes/preferences/preference_panes.py:723 msgid "Read" -msgstr "" +msgstr "Чытаць" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171 msgid "" "The number of 16 KiB blocks currently in the disk cache. This includes both " "read and write cache." msgstr "" -"Колькасць блокаў па 16 КБ, якія знаходзяцца зараз у дыскавым кэше. Уключае " -"кэш счытывання і запісу." +"Колькасць блокаў па 16 КБ, якія знаходзяцца зараз у дыскавым кэшы. Уключае " +"кэш счытвання і запісу." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172 msgid "Cache Size:" @@ -3512,12 +3580,12 @@ msgstr "Памер кэша:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173 msgid "Read Cache Size:" -msgstr "Памер кэша счытывання:" +msgstr "Памер кэша счытвання:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175 #: deluge/ui/gtk3/glade/connection_manager.ui.h:7 msgid "_Refresh" -msgstr "" +msgstr "_Абнавіць" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177 msgid "" @@ -3536,11 +3604,11 @@ msgstr "Адсылаць ананімную статыстыку" #: deluge/ui/console/modes/preferences/preference_panes.py:503 #: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57 msgid "System Information" -msgstr "" +msgstr "Сістэмная інфармацыя" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180 msgid "Location:" -msgstr "Размяшчэнне:" +msgstr "Месцазнаходжанне:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181 msgid "" @@ -3548,21 +3616,21 @@ msgid "" "using DNS to resolve the peer's country." msgstr "" "Калі Deluge не зможа знайсці базу файлаў па паказаным шляху, то для " -"вызначэння краіны пира будзе выкарыстоўвацца DNS." +"вызначэння краіны піра будзе выкарыстоўвацца DNS." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182 #: deluge/ui/console/modes/preferences/preference_panes.py:516 #: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85 msgid "GeoIP Database" -msgstr "" +msgstr "База даных GeoIP" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183 msgid "Associate with Deluge" -msgstr "" +msgstr "Звязаць з Deluge" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184 msgid "Magnet Links" -msgstr "" +msgstr "Магнет-спасылкі" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185 #: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37 @@ -3573,7 +3641,7 @@ msgstr "Порт дэмана:" #: deluge/ui/console/modes/preferences/preference_panes.py:655 #: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30 msgid "Port" -msgstr "" +msgstr "Порт" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187 #: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61 @@ -3591,15 +3659,15 @@ msgstr "Злучэнні" #: deluge/ui/console/modes/preferences/preference_panes.py:543 #: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80 msgid "Periodically check the website for new releases" -msgstr "Перыядычна правяраць вэб-сайт на наяўнасць аднаўленьняў" +msgstr "Перыядычна правяраць вэб-сайт на наяўнасць абнаўленняў" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193 msgid "_Delete" -msgstr "" +msgstr "_Выдаліць" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194 msgid "Accounts" -msgstr "" +msgstr "Акаўнты" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196 #: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29 @@ -3629,27 +3697,27 @@ msgstr "Інфармацыя" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201 msgid "_Install" -msgstr "" +msgstr "_Усталяваць" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202 msgid "_Find More..." -msgstr "" +msgstr "_Знайсці болей..." #: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4 msgid "Remove the selected torrent(s)?" -msgstr "" +msgstr "Выдаліць вылучаныя торэнты?" #: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5 msgid "Include downloaded files" -msgstr "" +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" -msgstr "Дадаць піра" +msgstr "Дадаць пір" #: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4 msgid "hostname:port" @@ -3657,11 +3725,11 @@ msgstr "назва_вузла:порт" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1 msgid "Properties" -msgstr "" +msgstr "Уласцівасці" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3 msgid "Max drop down rows" -msgstr "" +msgstr "Макс радкоў у спісе" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4 #: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2 @@ -3671,87 +3739,87 @@ 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" -msgstr "" +msgstr "Паказваць выбар файлаў" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7 msgid "Show folder name" -msgstr "" +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" -msgstr "" +msgstr "Уключыць аўтазапаўненне" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10 msgid "Show hidden files" -msgstr "" +msgstr "Паказваць схаваныя файлы" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11 msgid "Set new key" -msgstr "" +msgstr "Усталяваць новую клавішу" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12 msgid "Press this key to set new key accelerators to trigger auto-complete" -msgstr "" +msgstr "Націсніце гэту клавішу каб усталяваць яе як трыгер аўтазапаўнення" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13 msgid "Autocomplete" -msgstr "" +msgstr "Аўтазапаўнення" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14 msgid "Save path" -msgstr "" +msgstr "Захаваць шлях" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15 msgid "Ctrl+S" -msgstr "" +msgstr "Ctrl+S" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16 msgid "Ctrl+E" -msgstr "" +msgstr "Ctrl+E" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17 msgid "Ctrl+R" -msgstr "" +msgstr "Ctrl+R" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18 msgid "Ctrl+H" -msgstr "" +msgstr "Ctrl+H" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19 msgid "Ctrl+D" -msgstr "" +msgstr "Ctrl+D" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22 msgid "Toggle hidden files" -msgstr "" +msgstr "Пераключальнік схаваных файлаў" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23 msgid "Default path" -msgstr "" +msgstr "Шлях па змаўчанні" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24 msgid "Shortcuts" -msgstr "" +msgstr "Спалучэнні клавіш" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25 msgid "Select a Directory" -msgstr "" +msgstr "Выберыце папку" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26 msgid "Saved paths" -msgstr "" +msgstr "Захаваныя шляхі" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27 msgid "column" -msgstr "" +msgstr "слупок" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29 #: deluge/ui/console/modes/preferences/preferences.py:145 @@ -3763,11 +3831,11 @@ msgstr "" #: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51 #: deluge/ui/web/js/deluge-all/add/AddWindow.js:64 msgid "Cancel" -msgstr "" +msgstr "Скасаваць" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30 msgid "Open" -msgstr "" +msgstr "Адкрыць" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31 #: deluge/ui/web/js/deluge-all/Toolbar.js:39 @@ -3778,22 +3846,22 @@ msgstr "" #: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27 #: deluge/ui/web/js/deluge-all/add/AddWindow.js:65 msgid "Add" -msgstr "" +msgstr "Дадаць" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32 msgid "Add the current entry value to the list" -msgstr "" +msgstr "Дадаць бягучае значэнне ў спіс" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33 #: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98 #: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:102 msgid "Edit" -msgstr "" +msgstr "Рэдагаваць" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34 msgid "Edit the selected entry" -msgstr "" +msgstr "Рэдагаваць выбранае значэнне" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35 #: deluge/ui/web/js/deluge-all/Toolbar.js:46 @@ -3801,31 +3869,31 @@ msgstr "" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:110 #: deluge/ui/web/js/deluge-all/add/AddWindow.js:156 msgid "Remove" -msgstr "" +msgstr "Выдаліць" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36 msgid "Remove the selected entry" -msgstr "" +msgstr "Выдаліць выбраны запіс" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38 msgid "Move the selected entry up" -msgstr "" +msgstr "Падняць выбраны запіс" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40 msgid "Move the selected entry down" -msgstr "" +msgstr "Апусціць выбраны запіс" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41 msgid "Default" -msgstr "" +msgstr "Прадвызначана" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42 msgid "No default path set" -msgstr "" +msgstr "Няма прадвызначанага шляху" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43 msgid "Open properties dialog" -msgstr "" +msgstr "Адкрыць акенца ўласцівасцей" #: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1 msgid "Add Infohash" @@ -3833,11 +3901,11 @@ 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:" -msgstr "Хэш файлаў" +msgstr "Хэш файлаў:" #: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6 #: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5 @@ -3854,11 +3922,11 @@ msgstr "Дадаць хост" #: deluge/ui/web/js/deluge-all/MoveStorage.js:16 #: deluge/ui/web/js/deluge-all/Menus.js:346 msgid "Move Download Folder" -msgstr "" +msgstr "Перамясціць папку спампоўкі" #: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4 msgid "Move the torrent(s) download folder." -msgstr "" +msgstr "Перамясціць папку спампоўкі торэнта(ў)." #: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5 msgid "Destination:" @@ -3874,95 +3942,95 @@ msgstr "_Перайсці на вэб-сайт" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4 msgid "New Release Available!" -msgstr "" +msgstr "Даступна новая версія!" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5 msgid "Available Version:" -msgstr "" +msgstr "Даступная версія:" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6 msgid "Server Version" -msgstr "" +msgstr "Версія сервера" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7 msgid "Current Version:" -msgstr "" +msgstr "Бягучая версія:" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8 msgid "Do not show this dialog in the future" -msgstr "Больш не паказваць гэтае акно" +msgstr "Больш не паказваць гэта акно" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1 #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26 #: deluge/ui/web/render/tab_status.html:9 msgid "Down Speed:" -msgstr "" +msgstr "Хуткасць спампоўкі:" #: 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 "Хуткасць раздачы:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3 #: deluge/ui/web/render/tab_status.html:2 msgid "Downloaded:" -msgstr "" +msgstr "Спампавана:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4 #: deluge/ui/web/render/tab_status.html:3 msgid "Uploaded:" -msgstr "" +msgstr "Раздадзена:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5 #: deluge/ui/web/render/tab_status.html:16 msgid "Seeds:" -msgstr "" +msgstr "Сіды:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6 #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10 #: deluge/ui/web/render/tab_status.html:17 msgid "Peers:" -msgstr "" +msgstr "Піры:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8 #: deluge/ui/web/render/tab_status.html:18 msgid "Availability:" -msgstr "" +msgstr "Даступнасць:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9 #: deluge/ui/web/render/tab_status.html:25 msgid "Seed Rank:" -msgstr "" +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 msgid "Active Time:" -msgstr "" +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 msgid "Seeding Time:" -msgstr "" +msgstr "Час сідавання:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16 #: deluge/ui/web/render/tab_status.html:12 msgid "Pieces:" -msgstr "" +msgstr "Частак:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17 #: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3 @@ -3973,44 +4041,44 @@ msgstr "Назва:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25 msgid "Download Folder:" -msgstr "" +msgstr "Папка спампоўкі:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19 msgid "Added:" -msgstr "" +msgstr "Дададзена:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26 msgid "Total Size:" -msgstr "" +msgstr "Усяго памер:" #: 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 "Усяго файлаў:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24 msgid "Hash:" -msgstr "" +msgstr "Хэш:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31 msgid "Created By:" -msgstr "" +msgstr "Створана:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24 #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17 msgid "Comments:" -msgstr "Каментарыі:" +msgstr "Каментары:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29 msgid "Owner:" -msgstr "" +msgstr "Уласнік:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34 msgid "Move completed:" -msgstr "Перамяшчаць завершаныя" +msgstr "Перамяшчаць завершаныя:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36 #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39 @@ -4028,46 +4096,46 @@ msgstr "Выдаліць на рэйтынгу" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44 msgid "Bandwidth Limits" -msgstr "" +msgstr "Ліміты прапускной здольнасці" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46 msgid "Current Tracker:" -msgstr "" +msgstr "Бягучы трэкер:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47 msgid "Total Trackers:" -msgstr "" +msgstr "Усяго трэкераў:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48 #: deluge/ui/web/render/tab_status.html:6 msgid "Tracker Status:" -msgstr "" +msgstr "Статус трэкера:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49 #: deluge/ui/web/render/tab_status.html:5 msgid "Next Announce:" -msgstr "" +msgstr "Наступны анонс:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50 msgid "Private Torrent:" -msgstr "" +msgstr "Прыватны торэнт:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51 #: deluge/ui/gtk3/glade/torrent_menu.ui.h:8 msgid "_Edit Trackers" -msgstr "_Змяніць трэкеры" +msgstr "_Рэдагаваць трэкеры" #: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1 #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44 #: deluge/ui/web/js/deluge-all/Menus.js:284 msgid "Top" -msgstr "" +msgstr "Зверху" #: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4 #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45 #: deluge/ui/web/js/deluge-all/Menus.js:305 msgid "Bottom" -msgstr "" +msgstr "Знізу" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1 #: deluge/ui/web/js/deluge-all/add/AddWindow.js:50 @@ -4076,7 +4144,7 @@ msgstr "Дадаць торэнты" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5 msgid "_URL" -msgstr "_Ссылка" +msgstr "_URL" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6 msgid "Info_hash" @@ -4084,7 +4152,7 @@ msgstr "Хэш _файлаў" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11 msgid "Move Complete Folder" -msgstr "" +msgstr "Перамясціць завершаную папку" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12 msgid "Add In _Paused State" @@ -4099,32 +4167,32 @@ msgstr "Прыярытэт у першай/апошняй частак" #: 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 "Прапусціць праверку хэша" #: 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 "Зарэзерваваць месца на дыску" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24 msgid "Preallocate the disk space for the torrent files" -msgstr "" +msgstr "Зарэзерваваць месца на дыску для файлаў" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25 msgid "Maximum torrent download speed" -msgstr "" +msgstr "Макс хуткасць спампоўкі торэнта" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27 msgid "Maximum torrent upload speed" -msgstr "" +msgstr "Макс хуткасць раздачы торэнта" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29 msgid "Maximum torrent connections" -msgstr "" +msgstr "Макс злучэнняў для торэнта" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31 msgid "Maximum torrent upload slots" -msgstr "" +msgstr "Макс слотаў раздачы торэнта" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34 msgid "Apply To All" @@ -4136,25 +4204,25 @@ msgstr "Вярнуцца да налад па змаўчанню" #: deluge/ui/gtk3/glade/tray_menu.ui.h:1 msgid "_Show Deluge" -msgstr "Паказать Deluge" +msgstr "Па_казать Deluge" #: deluge/ui/gtk3/glade/tray_menu.ui.h:3 msgid "_Pause Session" -msgstr "" +msgstr "_Прыпыніць сесію" #: deluge/ui/gtk3/glade/tray_menu.ui.h:4 msgid "_Resume Session" -msgstr "" +msgstr "Ад_навіць сесію" #: deluge/ui/gtk3/glade/tray_menu.ui.h:5 #: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1 msgid "_Download Speed Limit" -msgstr "Перанесьці _файлы" +msgstr "Ліміт хуткасці с_пампоўкі" #: deluge/ui/gtk3/glade/tray_menu.ui.h:6 #: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2 msgid "_Upload Speed Limit" -msgstr "Абмежаванне хуткасці _запампоўкі" +msgstr "Ліміт хуткасці _раздачы" #: deluge/ui/gtk3/glade/tray_menu.ui.h:7 msgid "Quit & Shutdown Daemon" @@ -4165,21 +4233,21 @@ msgstr "Выйсці і спыніць дэман" #: deluge/ui/web/js/deluge-all/Menus.js:323 #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318 msgid "Edit Trackers" -msgstr "Змяніць трэкеры" +msgstr "Рэдагаваць трэкеры" #: deluge/ui/gtk3/glade/edit_trackers.ui.h:4 #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19 msgid "_Up" -msgstr "" +msgstr "_Вышэй" #: deluge/ui/gtk3/glade/edit_trackers.ui.h:8 #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22 msgid "_Down" -msgstr "" +msgstr "_Ніжэй" #: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1 msgid "_Add Peer" -msgstr "" +msgstr "_Дадаць пір" #: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2 msgid "Add a peer by its IP" @@ -4188,7 +4256,7 @@ msgstr "Дадаць піра па IP" #: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1 #: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17 msgid "Edit Tracker" -msgstr "Змяніць трэкер" +msgstr "Рэдагаваць трэкер" #: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4 #: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44 @@ -4198,11 +4266,11 @@ msgstr "Трэкер:" #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1 msgid "Enter Remote Path" -msgstr "Калі ласка, увядзіце аддалены шлях" +msgstr "Увядзіце аддалены шлях" #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4 msgid "Remote Path" -msgstr "" +msgstr "Аддалены шлях" #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5 #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5 @@ -4212,43 +4280,43 @@ msgstr "Шлях:" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1 msgid "32 KiB" -msgstr "" +msgstr "32 КіБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2 msgid "64 KiB" -msgstr "" +msgstr "64 КіБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3 msgid "128 KiB" -msgstr "" +msgstr "128 КіБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4 msgid "256 KiB" -msgstr "" +msgstr "256 КіБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5 msgid "512 KiB" -msgstr "" +msgstr "512 КіБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6 msgid "1 MiB" -msgstr "" +msgstr "1 МіБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7 msgid "2 MiB" -msgstr "" +msgstr "2 МіБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8 msgid "4 MiB" -msgstr "" +msgstr "4 МіБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9 msgid "8 MiB" -msgstr "" +msgstr "8 МіБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10 msgid "16 MiB" -msgstr "" +msgstr "16 МіБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11 msgid "Create Torrent" @@ -4256,7 +4324,7 @@ msgstr "Стварыць торэнт" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13 msgid "Fol_der" -msgstr "_Каталог" +msgstr "_Папка" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14 msgid "_Remote Path" @@ -4267,7 +4335,7 @@ msgstr "_Аддалены шлях" #: deluge/ui/web/js/deluge-all/details/FilesTab.js:73 #: deluge/ui/web/js/deluge-all/add/FilesTab.js:18 msgid "Files" -msgstr "" +msgstr "Файлы" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24 msgid "Webseeds" @@ -4279,7 +4347,7 @@ msgstr "Памер часткі:" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26 msgid "Set Private Flag" -msgstr "Усталяваць сьцяг прыватнасьці" +msgstr "Усталяваць сцяг прыватнасці" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27 msgid "Add this torrent to the session" @@ -4293,7 +4361,7 @@ msgstr "Дадаць гэты торэнт да сесіі" #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80 #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17 msgid "Options" -msgstr "Налады" +msgstr "Параметры" #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1 msgid "Save .torrent as" @@ -4301,15 +4369,15 @@ msgstr "Захаваць .torrent як" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:1 msgid "_Open Download Folder" -msgstr "" +msgstr "_Адкрыць папку спампоўкі" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:2 msgid "_Pause" -msgstr "" +msgstr "_Прыпыніць" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:3 msgid "Resu_me" -msgstr "_Аднавіць" +msgstr "Ад_навіць" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:4 #: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4 @@ -4318,7 +4386,7 @@ msgstr "Аднавіць вылучаныя торэнты." #: deluge/ui/gtk3/glade/torrent_menu.ui.h:5 msgid "Opt_ions" -msgstr "_Налады" +msgstr "_Параметры" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:6 msgid "_Queue" @@ -4334,11 +4402,11 @@ msgstr "_Выдаліць торэнт" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:10 msgid "_Force Re-check" -msgstr "Пераправерыць файлы" +msgstr "П_ераправерыць файлы" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:11 msgid "_Move Download Folder" -msgstr "" +msgstr "Пера_мясціць папку спампоўкі" #: deluge/ui/gtk3/glade/other_dialog.ui.h:3 msgid "label" @@ -4350,23 +4418,23 @@ msgstr "_Вылучыць усе" #: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2 msgid "_Pause All" -msgstr "_Прыпыніць усё" +msgstr "_Прыпыніць усе" #: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3 msgid "Resu_me All" -msgstr "Аднавіц_ь усё" +msgstr "Ад_навіць усе" #: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3 msgid "_Connection Limit" -msgstr "_Абмежаванне злучэнняў" +msgstr "Ліміт _злучэнняў" #: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4 msgid "Upload _Slot Limit" -msgstr "Абмежаванне слотаў раз_дачы" +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" @@ -4374,11 +4442,11 @@ 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" -msgstr "" +msgstr "Змяніць у_ладальніка" #: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1 #: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26 @@ -4387,48 +4455,48 @@ msgstr "Дадаць трэкер" #: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4 msgid "Add Trackers" -msgstr "" +msgstr "Дадаць трэкеры" #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1 msgid "Add URL" -msgstr "Дадаць адрас" +msgstr "Дадаць URL" #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4 msgid "From URL" -msgstr "" +msgstr "З URL" #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5 #: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1 msgid "URL:" -msgstr "URL-адрас:" +msgstr "URL:" #: deluge/ui/gtk3/glade/connection_manager.ui.h:9 msgid "Deluge Daemons" -msgstr "" +msgstr "Дэманы Deluge" #: deluge/ui/gtk3/glade/connection_manager.ui.h:10 msgid "Auto-connect to selected Daemon" -msgstr "" +msgstr "Аўтазлучэнне з выбраным дэманам" #: deluge/ui/gtk3/glade/connection_manager.ui.h:11 msgid "Auto-start localhost daemon (if required)" -msgstr "" +msgstr "Аўтастарт лакальнага дэмана (калі патрэбна)" #: deluge/ui/gtk3/glade/connection_manager.ui.h:12 msgid "Hide this dialog" -msgstr "" +msgstr "Схаваць гэта акно" #: deluge/ui/gtk3/glade/connection_manager.ui.h:13 msgid "Startup Options" -msgstr "" +msgstr "Параметры запуску" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1 msgid "_Open File" -msgstr "" +msgstr "_Адкрыць файл" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2 msgid "_Show Folder" -msgstr "" +msgstr "_Паказаць папку" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3 msgid "_Expand All" @@ -4436,30 +4504,30 @@ msgstr "_Разгарнуць усё" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4 msgid "_Skip" -msgstr "" +msgstr "Пр_апусціць" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5 msgid "_Low" -msgstr "" +msgstr "_Нізкі" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6 msgid "_Normal" -msgstr "" +msgstr "_Звычайны" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7 msgid "_High" -msgstr "" +msgstr "_Высокі" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" -msgstr "" +msgstr "Каманда Deluge" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." -msgstr "" +msgstr "Deluge - легкавесны, свабодны, крос-платформенны кліент BitTorrent." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4467,334 +4535,353 @@ msgid "" "Deluge heavily utilises the libtorrent library it has a comprehensive list " "of the features provided." msgstr "" +"Deluge утрымлівае звычайныя функцыі кліентаў BitTorrent, напрыклад пратакол " +"шыфравання, DHT, лакальнае адкрыццё піраў (LSD), абмен пірамі (PEX), UPnP, " +"NAT-PMP, падтрымка проксі, вэб-сіды, ліміты хуткасці. Паколькі Deluge " +"актыўна выкарыстоўвае бібліятэку libtorrent, яна мае комплексны спіс функцый." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " "handles all the BitTorrent activity and is able to run on headless machines " "with the user-interfaces connecting remotely from any other platform." msgstr "" +"Deluge распрацавана каб працаваць і як звычайная аўтаномная праграма, і як " +"кліент-серверная. У рэжыме тонкага кліента дэман Deluge кіруе ўсімі " +"дзеяннямі з торэнтамі і здольны працаваць аддалена з іншых платформ праз " +"карыстальніцкі інтэрфейс." #: deluge/ui/data/share/applications/deluge.desktop.in.h:2 msgid "BitTorrent Client" -msgstr "" +msgstr "Кліент BitTorrent" #: deluge/ui/data/share/applications/deluge.desktop.in.h:3 msgid "Deluge BitTorrent Client" -msgstr "" +msgstr "BitTorrent кліент Deluge" #: deluge/ui/data/share/applications/deluge.desktop.in.h:4 msgid "Download and share files over BitTorrent" -msgstr "" +msgstr "Спампоўванне і раздача файлаў праз BitTorrent" #: deluge/ui/console/console.py:76 msgid "Console Options" -msgstr "" +msgstr "Налады кансолі" #: deluge/ui/console/console.py:78 msgid "" "These daemon connect options will be used for commands, or if console ui " "autoconnect is enabled." msgstr "" +"Гэтыя налады дэмана будуць выкарыстоўвацца для каманд ці пры ўключэнні " +"аўтазлучэння ў кансолі." #: deluge/ui/console/console.py:87 msgid "Deluge daemon IP address to connect to (default 127.0.0.1)" -msgstr "" +msgstr "IP адрас дэмана Deluge для злучэння (па змаўчанні 127.0.0.1)" #: deluge/ui/console/console.py:96 msgid "Deluge daemon port to connect to (default 58846)" -msgstr "" +msgstr "Порт дэмана Deluge для злучэння (па змаўчанні 58846)" #: deluge/ui/console/console.py:104 msgid "Deluge daemon username to use when connecting" -msgstr "" +msgstr "Імя карыстальніка дэмана Deluge пры злучэнні" #: deluge/ui/console/console.py:111 msgid "Deluge daemon password to use when connecting" -msgstr "" +msgstr "Пароль дэмана Deluge пры злучэнні" #: deluge/ui/console/console.py:131 msgid "Console Commands" -msgstr "" +msgstr "Кансольныя каманды" #: deluge/ui/console/console.py:132 msgid "Description" -msgstr "" +msgstr "Апісанне" #: deluge/ui/console/console.py:133 msgid "The following console commands are available:" -msgstr "" +msgstr "Даступны кансольныя каманды:" #: deluge/ui/console/console.py:134 #: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2 msgid "Command" -msgstr "Загад" +msgstr "Каманда" #: deluge/ui/console/cmdline/command.py:208 #, python-format msgid "`%s` alias" -msgstr "" +msgstr "`%s` імя" #: deluge/ui/console/cmdline/commands/manage.py:29 msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]" msgstr "" +"Выкарыстанне: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]" #: deluge/ui/console/cmdline/commands/manage.py:35 msgid "an expression matched against torrent ids and torrent names" -msgstr "" +msgstr "выраз суадносіць id торэнтаў і імёны торэнтаў" #: deluge/ui/console/cmdline/commands/manage.py:43 #: deluge/ui/console/cmdline/commands/config.py:88 msgid "set value for this key" -msgstr "" +msgstr "задаць значэнне ключа" #: deluge/ui/console/cmdline/commands/manage.py:46 #: deluge/ui/console/cmdline/commands/config.py:91 msgid "Value to set" -msgstr "" +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" -msgstr "" +msgstr "Таксама выдаляе даныя торэнта" #: deluge/ui/console/cmdline/commands/rm.py:40 msgid "List the matching torrents without removing." -msgstr "" +msgstr "Спіс суаднесеных торэнтаў без выдалення." #: deluge/ui/console/cmdline/commands/rm.py:46 #: deluge/ui/console/cmdline/commands/recheck.py:28 #: deluge/ui/console/cmdline/commands/move.py:31 msgid "One or more torrent ids" -msgstr "" +msgstr "Адзін ці больш id торэнтаў" #: deluge/ui/console/cmdline/commands/rm.py:66 #, python-format msgid "Confirm with -c to remove the listed torrents (Count: %d)" -msgstr "" +msgstr "Пацвердзіць з -c каб выдаліць пералічаныя торэнты (Падлік: %d)" #: deluge/ui/console/cmdline/commands/resume.py:22 msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]" -msgstr "" +msgstr "Выкарыстанне: resume [ * | <torrent-id> [<torrent-id> ...] ]" #: deluge/ui/console/cmdline/commands/resume.py:29 msgid "One or more torrent ids. Use \"*\" to resume all torrents" msgstr "" +"Адзін ці больш id торэнтаў. Выкарыстоўвайце \"*\" каб аднавіць усе торэнты" #: deluge/ui/console/cmdline/commands/pause.py:29 msgid "One or more torrent ids. Use \"*\" to pause all torrents" msgstr "" +"Адзін ці больш id торэнтаў. Выкарыстоўвайце \"*\" каб прыпыніць усе торэнты" #: deluge/ui/console/cmdline/commands/add.py:38 msgid "Download folder for torrent" -msgstr "" +msgstr "Папка спампоўкі для торэнта" #: deluge/ui/console/cmdline/commands/add.py:44 msgid "Move the completed torrent to this folder" -msgstr "" +msgstr "Перамясціць завершаны торэнт у гэту папку" #: deluge/ui/console/cmdline/commands/add.py:50 msgid "One or more torrent files, URLs or magnet URIs" -msgstr "" +msgstr "Адзін ці больш торэнт-файлаў, URL ці спасылак URI" #: deluge/ui/console/cmdline/commands/plugin.py:29 msgid "Lists available plugins" -msgstr "" +msgstr "Спіс даступных плагінаў" #: deluge/ui/console/cmdline/commands/plugin.py:37 msgid "Shows enabled plugins" -msgstr "" +msgstr "Паказвае ўключаныя плагіны" #: deluge/ui/console/cmdline/commands/plugin.py:40 msgid "Enables a plugin" -msgstr "" +msgstr "Уключае плагін" #: deluge/ui/console/cmdline/commands/plugin.py:43 msgid "Disables a plugin" -msgstr "" +msgstr "Выключае плагін" #: deluge/ui/console/cmdline/commands/plugin.py:51 msgid "Reload list of available plugins" -msgstr "" +msgstr "Перазагрузка спіса даступных плагінаў" #: deluge/ui/console/cmdline/commands/plugin.py:54 msgid "Install a plugin from an .egg file" -msgstr "" +msgstr "Усталяваць плагін з файла .egg" #: deluge/ui/console/cmdline/commands/status.py:36 msgid "" "Raw values for upload/download rates (without KiB/s suffix)(useful for " "scripts that want to do their own parsing)" msgstr "" +"Значэнні для рэйтынга раздачы/спампоўкі (без КіБ/с)(карысна для скрыптоў, " +"якія жадаюць рабіць уласны парсінг)" #: deluge/ui/console/cmdline/commands/status.py:46 msgid "Do not show torrent status (Improves command speed)" -msgstr "" +msgstr "Не паказваць статус торэнта (Паляпшае хуткасць каманды)" #: deluge/ui/console/cmdline/commands/connect.py:26 msgid "Usage: connect <host[:port]> [<username>] [<password>]" -msgstr "" +msgstr "Выкарыстанне: connect <host[:port]> [<username>] [<password>]" #: deluge/ui/console/cmdline/commands/connect.py:30 msgid "Daemon host and port" -msgstr "" +msgstr "Хост і порт дэмана" #: deluge/ui/console/cmdline/commands/connect.py:36 #: deluge/ui/console/modes/preferences/preference_panes.py:652 #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259 msgid "Password" -msgstr "" +msgstr "Пароль" #: deluge/ui/console/cmdline/commands/move.py:34 msgid "The path to move the torrents to" -msgstr "" +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" -msgstr "" +msgstr "Адна ці больш каманд" #: deluge/ui/console/cmdline/commands/config.py:79 msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]" -msgstr "" +msgstr "Выкарыстанне: config [--set <key> <value>] [<key> [<key>...] ]" #: deluge/ui/console/cmdline/commands/info.py:101 msgid "Show more information per torrent." -msgstr "" +msgstr "Паказаць больш інфармацыі аб торэнце." #: deluge/ui/console/cmdline/commands/info.py:109 msgid "Show more detailed information including files and peers." -msgstr "" +msgstr "Паказаць больш падрабязную інфармацыю пра файлы і піры." #: deluge/ui/console/cmdline/commands/info.py:116 #, python-format msgid "Show torrents with state STATE: %s." -msgstr "" +msgstr "Паказаць торэнты са станам STATE: %s." #: deluge/ui/console/cmdline/commands/info.py:132 msgid "Same as --sort but items are in reverse order." -msgstr "" +msgstr "Такое ж як --sort але адзінкі ў адваротным парадку." #: deluge/ui/console/cmdline/commands/info.py:138 msgid "One or more torrent ids. If none is given, list all" -msgstr "" +msgstr "Адзін ці больш id торэнтаў. Калі нічога не выбрана, паказваюцца ўсе" #: deluge/ui/console/modes/connectionmanager.py:44 msgid "Select Host" -msgstr "" +msgstr "Выбраць хост" #: deluge/ui/console/modes/connectionmanager.py:51 msgid "Quit" -msgstr "" +msgstr "Выйсці" #: deluge/ui/console/modes/connectionmanager.py:51 msgid "Delete Host" -msgstr "" +msgstr "Выдаліць хост" #: deluge/ui/console/modes/connectionmanager.py:116 msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)" -msgstr "" +msgstr "Дадаць хост (стрэлкі ўверх/уніз для перамяшчэння, Esc каб скасаваць)" #: deluge/ui/console/modes/connectionmanager.py:133 msgid "Error adding host" -msgstr "" +msgstr "Памылка дадання хоста" #: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96 msgid "Columns" -msgstr "" +msgstr "Слупкі" #: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96 msgid "Width" -msgstr "" +msgstr "Шырыня" #: deluge/ui/console/modes/preferences/preference_panes.py:178 msgid "General options" -msgstr "" +msgstr "Агульныя параметры" #: deluge/ui/console/modes/preferences/preference_panes.py:182 msgid "Ring system bell when a download finishes" -msgstr "" +msgstr "Сістэмны званочак калі скончылася спампоўка" #: deluge/ui/console/modes/preferences/preference_panes.py:188 msgid "List complete torrents after incomplete regardless of sorting order" msgstr "" +"Змяшчаць завершаныя торэнты пасля незавершаных па выбранай сарціроўцы" #: deluge/ui/console/modes/preferences/preference_panes.py:193 msgid "Move selection when moving torrents in the queue" -msgstr "" +msgstr "Перамясціць выбар пры перамяшчэнні торэнта ў чарзе" #: deluge/ui/console/modes/preferences/preference_panes.py:200 #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67 msgid "Language" -msgstr "" +msgstr "Мова" #: deluge/ui/console/modes/preferences/preference_panes.py:202 msgid "Command Line Mode" -msgstr "" +msgstr "Рэжым каманднага радка" #: deluge/ui/console/modes/preferences/preference_panes.py:205 msgid "Do not store duplicate input in history" -msgstr "" +msgstr "Не захоўваць копіі ўводу ў гісторыі" #: deluge/ui/console/modes/preferences/preference_panes.py:210 msgid "Store and load command line history in command line mode" 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 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39 msgid "Folders" -msgstr "" +msgstr "Папкі" #: deluge/ui/console/modes/preferences/preference_panes.py:237 msgid "Download To" -msgstr "" +msgstr "Спампоўваць у" #: deluge/ui/console/modes/preferences/preference_panes.py:254 msgid "Move completed to" -msgstr "" +msgstr "Перамяшчаць завершаны ў" #: deluge/ui/console/modes/preferences/preference_panes.py:269 msgid "Copy of .torrent files to" -msgstr "" +msgstr "Капіяваць файлы .torrent у" #: deluge/ui/console/modes/preferences/preference_panes.py:290 msgid "Add Paused" -msgstr "" +msgstr "Дадаць прыпыненыя" #: deluge/ui/console/modes/preferences/preference_panes.py:293 msgid "Pre-Allocate disk space" -msgstr "" +msgstr "Рэзерваваць месца на дыску" #: deluge/ui/console/modes/preferences/preference_panes.py:304 msgid "Incomming Ports" -msgstr "" +msgstr "Уваходзячыя парты" #: deluge/ui/console/modes/preferences/preference_panes.py:313 #: deluge/ui/console/modes/preferences/preference_panes.py:337 msgid "From" -msgstr "" +msgstr "З" #: deluge/ui/console/modes/preferences/preference_panes.py:321 #: deluge/ui/console/modes/preferences/preference_panes.py:345 msgid "To" -msgstr "" +msgstr "Да" #: deluge/ui/console/modes/preferences/preference_panes.py:331 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131 @@ -4803,189 +4890,192 @@ msgstr "Выкарыстоўваць выпадковыя парты" #: deluge/ui/console/modes/preferences/preference_panes.py:352 msgid "Incoming Interface" -msgstr "" +msgstr "Уваходзячы інтэрфейс" #: deluge/ui/console/modes/preferences/preference_panes.py:355 msgid "IP address of the interface to listen on (leave empty for default):" msgstr "" +"IP адрас інтэрфейса каб слухаць (перадвызначаны калі пакінуць пустым):" #: deluge/ui/console/modes/preferences/preference_panes.py:363 msgid "" "The network interface name or IP address for outgoing BitTorrent " "connections. (Leave empty for default.):" msgstr "" +"Імя інтэрфейса сеткі ці IP адрас для сыходзячага злучэння BitTorrent. " +"(Перадвызначаны калі пакінуць пустым.):" #: deluge/ui/console/modes/preferences/preference_panes.py:382 msgid "Inbound" -msgstr "" +msgstr "Уваходзячы" #: deluge/ui/console/modes/preferences/preference_panes.py:391 msgid "Outbound" -msgstr "" +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 msgid "Maximum Connections" -msgstr "" +msgstr "Максімум злучэнняў" #: deluge/ui/console/modes/preferences/preference_panes.py:423 #: deluge/ui/console/modes/preferences/preference_panes.py:476 #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63 msgid "Maximum Upload Slots" -msgstr "" +msgstr "Максімум слотаў раздачы" #: deluge/ui/console/modes/preferences/preference_panes.py:430 #: deluge/ui/console/modes/preferences/preference_panes.py:483 msgid "Maximum Download Speed (KiB/s)" -msgstr "" +msgstr "Максімум хуткасці спампоўкі (КіБ/с)" #: deluge/ui/console/modes/preferences/preference_panes.py:437 #: deluge/ui/console/modes/preferences/preference_panes.py:490 msgid "Maximum Upload Speed (KiB/s)" -msgstr "" +msgstr "Максімум хуткасці раздачы (КіБ/с)" #: deluge/ui/console/modes/preferences/preference_panes.py:444 msgid "Maximum Half-Open Connections" -msgstr "" +msgstr "Максімум паўадкрытых злучэнняў" #: deluge/ui/console/modes/preferences/preference_panes.py:451 msgid "Maximum Connection Attempts per Second" -msgstr "" +msgstr "Максімум спроб злучэнняў у секунду" #: deluge/ui/console/modes/preferences/preference_panes.py:463 msgid "Rate Limit IP Overhead" -msgstr "" +msgstr "Ацаніць верхні ліміт IP" #: 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." -msgstr "" +msgstr "Так, адсылаць ананімную статыстыку." #: deluge/ui/console/modes/preferences/preference_panes.py:531 msgid "Daemon Port" -msgstr "" +msgstr "Порт дэмана" #: deluge/ui/console/modes/preferences/preference_panes.py:538 msgid "Allow remote connections" -msgstr "" +msgstr "Дазволіць аддаленыя злучэнні" #: deluge/ui/console/modes/preferences/preference_panes.py:561 msgid "Total" -msgstr "" +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)" -msgstr "" +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" -msgstr "" +msgstr "Налады проксі" #: deluge/ui/console/modes/preferences/preference_panes.py:649 msgid "Type" -msgstr "" +msgstr "Тып" #: deluge/ui/console/modes/preferences/preference_panes.py:653 msgid "Hostname" -msgstr "" +msgstr "Імя хоста" #: deluge/ui/console/modes/preferences/preference_panes.py:673 msgid "Proxy Type Help" -msgstr "" +msgstr "Дапамога тыпа проксі" #: deluge/ui/console/modes/preferences/preference_panes.py:697 msgid "Cache Size (16 KiB blocks)" -msgstr "" +msgstr "Памер кэша (блокі 16 КіБ)" #: deluge/ui/console/modes/preferences/preference_panes.py:704 msgid "Cache Expiry (seconds)" -msgstr "" +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" -msgstr "" +msgstr "Запісвае" #: deluge/ui/console/modes/preferences/preference_panes.py:720 msgid "Write Cache Hit Ratio" -msgstr "" +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" -msgstr "" +msgstr "Чытае" #: deluge/ui/console/modes/preferences/preference_panes.py:735 msgid "Read Cache Hit Ratio" -msgstr "" +msgstr "Рэйтынг чытання кэша" #: deluge/ui/console/modes/preferences/preference_panes.py:741 msgid "Cache Size" -msgstr "" +msgstr "Памер кэша" #: deluge/ui/console/modes/preferences/preference_panes.py:746 msgid "Read Cache Size" -msgstr "" +msgstr "Памер кэша чытання" #: deluge/ui/console/modes/preferences/preferences.py:145 #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333 #: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87 msgid "Apply" -msgstr "" +msgstr "Ужыць" #: deluge/ui/console/modes/preferences/preferences.py:145 #: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35 #: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52 #: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88 msgid "OK" -msgstr "" +msgstr "ОК" #: deluge/ui/console/widgets/fields.py:1070 msgid "Select Language" -msgstr "" +msgstr "Выбраць мову" #: deluge/ui/console/widgets/statusbars.py:120 #, python-format msgid "IP {!white,blue!}%s{!status!}" -msgstr "" +msgstr "IP {!white,blue!}%s{!status!}" #: deluge/plugins/Blocklist/deluge_blocklist/common.py:114 #: deluge/plugins/Blocklist/deluge_blocklist/common.py:116 #: deluge/plugins/Blocklist/deluge_blocklist/common.py:118 #, python-format msgid "The IP address \"%s\" is badly formed" -msgstr "" +msgstr "IP адрас \"%s\" дрэнна сфарміраваны" #: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21 msgid "Emule IP list (GZip)" @@ -4997,7 +5087,7 @@ msgstr "SafePeer тэкст (zip)" #: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23 msgid "PeerGuardian Text (Uncompressed)" -msgstr "PeerGuardian тэкст (без сціску)" +msgstr "PeerGuardian тэкст (несціснуты)" #: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24 msgid "PeerGuardian P2B (GZip)" @@ -5005,7 +5095,7 @@ msgstr "PeerGuardian P2B (GZip)" #: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45 msgid "Blocked IP Ranges /Whitelisted IP Ranges" -msgstr "" +msgstr "Блакіраваныя дыяпазоны IP /Дазволеныя дыяпазоны IP" #: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56 #: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156 @@ -5015,7 +5105,7 @@ msgstr "Чорны спіс" #: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233 msgid "Bad IP address" -msgstr "" +msgstr "Дрэнны IP адрас" #: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40 msgid "Invalid leader" @@ -5052,11 +5142,11 @@ msgstr "Спампаваць файл чорнага спісу, калі неа #: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8 msgid "Check Download and Import" -msgstr "Праверыць і запампанаваць" +msgstr "Праверыць спампоўку і імпарт" #: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9 msgid "Download a new blocklist file and import it." -msgstr "Спампаваць новы файл чорнага спісу і дабавіць яго" +msgstr "Спампаваць новы файл чорнага спісу і дабавіць яго." #: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10 msgid "Force Download and Import" @@ -5089,11 +5179,11 @@ msgstr "<b>Інфармацыя</b>" #: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17 msgid "<b>Whitelist</b>" -msgstr "" +msgstr "<b>Белы спіс</b>" #: deluge/plugins/Execute/deluge_execute/gtkui.py:36 msgid "Torrent Complete" -msgstr "Запампоўка торэнту скончана" +msgstr "Торэнт завершаны" #: deluge/plugins/Execute/deluge_execute/gtkui.py:37 msgid "Torrent Added" @@ -5101,7 +5191,7 @@ msgstr "Торэнт дададзены" #: deluge/plugins/Execute/deluge_execute/gtkui.py:38 msgid "Torrent Removed" -msgstr "" +msgstr "Торэнт выдалены" #: deluge/plugins/Execute/deluge_execute/gtkui.py:64 #: deluge/plugins/Execute/deluge_execute/gtkui.py:79 @@ -5114,86 +5204,92 @@ msgstr "Падзея" #: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3 msgid "<b>Add Command</b>" -msgstr "Дадаць загад" +msgstr "<b>Дадаць каманду</b>" #: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4 msgid "<b>Commands</b>" -msgstr "<b>Загады</b>" +msgstr "<b>Каманды</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327 #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342 msgid "Incompatible Option" -msgstr "" +msgstr "Несумяшчальная опцыя" #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418 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 msgid "AutoAdd" -msgstr "" +msgstr "Аўтададанне" #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495 msgid "Double-click to toggle" -msgstr "" +msgstr "Двайное націсканне каб пераключыць" #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503 #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511 msgid "Double-click to edit" -msgstr "" +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." -msgstr "" +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" -msgstr "" +msgstr "Уласцівасці папкі прагляду" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2 msgid "" "If a .torrent file is added to this directory,\n" "it will be added to the session." msgstr "" +"Калі файл .torrent дададзены ў папку,\n" +"ён будзе дададзены да сесіі." #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4 #: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2 msgid "Select A Folder" -msgstr "Выбраць каталог" +msgstr "Вылучыць папку" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5 msgid "Enable this watch folder" -msgstr "" +msgstr "Уключыць папку прагляду" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6 msgid "<b>Watch Folder</b>" -msgstr "" +msgstr "<b>Папка прагляду</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7 msgid "Delete .torrent after adding" -msgstr "" +msgstr "Выдаліць .torrent пасля дадання" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8 msgid "" "Once the torrent is added to the session,\n" "the .torrent will be deleted." msgstr "" +"Як толькі торэнт дададзены да сесіі,\n" +".torrent будзе выдалены." #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10 msgid "Append extension after adding:" -msgstr "" +msgstr "Дадаць пашырэнне пасля дадання:" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11 msgid "" @@ -5201,10 +5297,13 @@ msgid "" "an extension will be appended to the .torrent\n" "and it will remain in the same directory." msgstr "" +"Як толькі торэнт дададзены да сесіі,\n" +"пашырэнне будзе дададзена да .torrent\n" +"і застанецца ў той жа папцы." #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14 msgid ".added" -msgstr "" +msgstr ".added" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16 msgid "" @@ -5212,56 +5311,61 @@ 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 "" "Once the torrent is deleted from the session,\n" "also delete the .torrent file used to add it." msgstr "" +"Як толькі торэнт выдалены з сесіі,\n" +"таксама выдаліць і адпаведны файл .torrent." #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22 msgid "<b>Torrent File Action</b>" -msgstr "" +msgstr "<b>Дзеянні з файлам торэнта</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23 msgid "Set download folder" -msgstr "" +msgstr "Выбраць папку спампоўкі" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24 msgid "This folder will be where the torrent data is downloaded to." -msgstr "" +msgstr "У гэту папку будуць спампоўвацца даныя торэнтаў." #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25 msgid "<b>Download Folder</b>" -msgstr "" +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>" -msgstr "" +msgstr "<b>Перамясціць завершаныя</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28 msgid "Label: " -msgstr "" +msgstr "Пазнака: " #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29 msgid "<b>Label</b>" -msgstr "" +msgstr "<b>Пазнака</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30 msgid "Main" -msgstr "" +msgstr "Асноўная" #: 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 "Выбраны тут карыстальнік будзе ўласнікам торэнта." #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32 msgid "<b>Owner</b>" -msgstr "" +msgstr "<b>Уласнік</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33 #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103 @@ -5281,7 +5385,7 @@ msgstr "Максімальная колькасць слотаў раздачы: #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37 #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77 msgid "Max Download Speed:" -msgstr "Максімальная хуткасць запампоўкі:" +msgstr "Максімальная хуткасць спампоўкі:" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38 msgid "<b>Bandwidth</b>" @@ -5290,15 +5394,15 @@ msgstr "<b>Абмежаванні</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41 #: deluge/ui/web/render/tab_status.html:19 msgid "Auto Managed:" -msgstr "" +msgstr "Аўтаматычна:" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42 msgid "Add Paused:" -msgstr "" +msgstr "Дадаць прыпыненыя:" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43 msgid "Queue to:" -msgstr "" +msgstr "Чарга да:" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47 msgid "<b>Queue</b>" @@ -5306,82 +5410,84 @@ msgstr "<b>Чарга</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1 msgid "<b>Watch Folders:</b>" -msgstr "" +msgstr "<b>Папкі назірання:</b>" #: deluge/plugins/Stats/deluge_stats/gtkui.py:60 msgid "minutes" -msgstr "" +msgstr "хвіліны" #: deluge/plugins/Stats/deluge_stats/gtkui.py:62 msgid "1 minute" -msgstr "" +msgstr "1 хвіліна" #: deluge/plugins/Stats/deluge_stats/gtkui.py:64 msgid "1 second" -msgstr "" +msgstr "1 секунда" #: deluge/plugins/Stats/deluge_stats/gtkui.py:66 msgid "seconds" -msgstr "" +msgstr "секунды" #: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1 msgid "Stats" -msgstr "" +msgstr "Статыстыка" #: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2 msgid "Resolution" -msgstr "" +msgstr "Раздзяляльнасць" #: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5 msgid "Seeds/Peers" -msgstr "" +msgstr "Сіды/Піры" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1 msgid "Download color:" -msgstr "" +msgstr "Колер спампоўкі:" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2 msgid "Upload color:" -msgstr "" +msgstr "Колер раздачы:" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3 msgid "<b>Connections Graph</b>" -msgstr "" +msgstr "<b>Граф злучэнняў</b>" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4 msgid "<b>Bandwidth Graph</b>" -msgstr "" +msgstr "<b>Граф прапускной здольнасці</b>" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5 msgid "DHT nodes:" -msgstr "" +msgstr "Вузлы DHT:" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6 msgid "Cached DHT nodes:" -msgstr "" +msgstr "Кэшаваныя вузлы DHT:" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7 msgid "DHT torrents:" -msgstr "" +msgstr "Торэнты DHT:" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9 msgid "<b>Seeds / Peers</b>" -msgstr "" +msgstr "<b>Сіды / Піры</b>" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11 msgid "<b>Graph Colors</b>" -msgstr "" +msgstr "<b>Колеры графаў</b>" #: deluge/plugins/WebUi/deluge_webui/gtkui.py:35 #: deluge/plugins/WebUi/deluge_webui/gtkui.py:47 msgid "WebUi" -msgstr "" +msgstr "Вэб-інтэрфейс" #: deluge/plugins/WebUi/deluge_webui/gtkui.py:90 msgid "" "The Deluge web interface is not installed, please install the\n" "interface and try again" msgstr "" +"Вэб-інтэрфейс Deluge не ўсталяваны, калі ласка,\n" +"усталюйце яго і паўтарыце спробу" #: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1 msgid "Enable web interface" @@ -5397,21 +5503,21 @@ msgstr "Праслухоўваць порт:" #: deluge/plugins/Label/deluge_label/core.py:184 msgid "Invalid label, valid characters:[a-z0-9_-]" -msgstr "Няверная метка. Дазволеныя сімвалы: [a-z0-9_-]" +msgstr "Памылковая пазнака. Дазволеныя сімвалы: [a-z0-9_-]" #: deluge/plugins/Label/deluge_label/core.py:186 msgid "Empty Label" -msgstr "Пустая метка" +msgstr "Пустая пазнака" #: deluge/plugins/Label/deluge_label/core.py:187 msgid "Label already exists" -msgstr "Метка ўжо існуе" +msgstr "Пазнака ўжо існуе" #: deluge/plugins/Label/deluge_label/core.py:195 #: deluge/plugins/Label/deluge_label/core.py:285 #: deluge/plugins/Label/deluge_label/core.py:320 msgid "Unknown Label" -msgstr "Невядомая метка" +msgstr "Невядомая пазнака" #: deluge/plugins/Label/deluge_label/core.py:321 msgid "Unknown Torrent" @@ -5419,20 +5525,20 @@ msgstr "Невядомы торэнт" #: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46 msgid "Label _Options" -msgstr "_Налады меткі" +msgstr "_Налады пазнакі" #: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47 msgid "_Remove Label" -msgstr "_Выдаліць метку" +msgstr "_Выдаліць пазнаку" #: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48 msgid "_Add Label" -msgstr "_Дадаць метку" +msgstr "_Дадаць пазнаку" #: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177 #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2 msgid "Label Options" -msgstr "Налады меткі" +msgstr "Налады пазнакі" #: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34 #: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37 @@ -5440,19 +5546,19 @@ msgstr "Налады меткі" #: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49 #: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77 msgid "Label" -msgstr "Метка" +msgstr "Пазнака" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1 msgid "tracker1.org" -msgstr "" +msgstr "tracker1.org" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3 msgid "<b>Label Options</b>" -msgstr "<b>Налады меткі</b>" +msgstr "<b>Налады пазнакі</b>" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9 msgid "Apply per torrent max settings:" -msgstr "Прымяніць максімальныя налады да кожнага торэнту" +msgstr "Прымяніць макс налады да кожнага торэнта:" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10 msgid "Maximum" @@ -5460,11 +5566,11 @@ msgstr "Максімум" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14 msgid "Apply Queue settings:" -msgstr "Прымяніць налады чаргі" +msgstr "Прымяніць налады чаргі:" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17 msgid "Apply folder settings:" -msgstr "" +msgstr "Прымяніць налады папкі:" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19 msgid "<i>(1 line per tracker)</i>" @@ -5472,107 +5578,107 @@ msgstr "<i>(кожны трэкер у асобным радку)</i>" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20 msgid "Automatically apply label:" -msgstr "Аўтаматычна ўжываць метку:" +msgstr "Аўтаматычна ўжываць пазнаку:" #: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1 msgid "Add Label" -msgstr "Дадаць метку" +msgstr "Дадаць пазнаку" #: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2 msgid "<b>Add Label</b>" -msgstr "<b>Дадаць метку</b>" +msgstr "<b>Дадаць пазнаку</b>" #: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1 msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n" msgstr "" "<i>Выкарыстоўвайце бакавую панэль для дадання, выпраўлення і выдалення " -"метак.</i>\n" +"пазнак.</i>\n" #: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3 msgid "<b>Labels</b>" -msgstr "<b>Меткі</b>" +msgstr "<b>Пазнакі</b>" #: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171 msgid "Notification Blink shown" -msgstr "" +msgstr "Паказваць мігценне паведамлення" #: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175 msgid "Popup notification is not enabled." -msgstr "" +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" -msgstr "" +msgstr "Памылка паведамленняў" #: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188 msgid "Notification popup shown" -msgstr "" +msgstr "Паказваць усплываючае акно" #: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192 msgid "Sound notification not enabled" -msgstr "" +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 msgid "Sound notification failed %s" -msgstr "" +msgstr "Гукавое апавяшчэнне няўдала %s" #: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210 msgid "Sound notification Success" -msgstr "" +msgstr "Гукавое апавяшчэнне ўдалае" #: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234 msgid "Finished Torrent" -msgstr "" +msgstr "Торэнт скончаны" #: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238 #, python-format msgid "" "The torrent \"%(name)s\" including %(num_files)i file(s) has finished " "downloading." -msgstr "" +msgstr "Скончылася спампоўка \"%(name)s\" з %(num_files)i файла(ў)." #: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287 #: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317 msgid "Notifications" -msgstr "" +msgstr "Апавяшчэнні" #: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663 msgid "Choose Sound File" -msgstr "" +msgstr "Выберыце гукавы файл" #: deluge/plugins/Notifications/deluge_notifications/core.py:127 #: deluge/plugins/Notifications/deluge_notifications/core.py:158 #, python-format msgid "There was an error sending the notification email: %s" -msgstr "" +msgstr "Памылка апавяшчэння па электроннай пошце: %s" #: deluge/plugins/Notifications/deluge_notifications/core.py:145 #, python-format msgid "Server did not reply properly to HELO greeting: %s" -msgstr "" +msgstr "Сервер няправільна адказаў на прывітанне: %s" #: deluge/plugins/Notifications/deluge_notifications/core.py:149 #, python-format msgid "Server refused username/password combination: %s" -msgstr "" +msgstr "Сервер адмовіўся прыняць імя карыстальніка або пароль: %s" #: deluge/plugins/Notifications/deluge_notifications/core.py:174 msgid "Notification email sent." -msgstr "" +msgstr "Апавяшчэнне выслана па эл. пошце." #: deluge/plugins/Notifications/deluge_notifications/core.py:181 #, python-format msgid "Finished Torrent \"%(name)s\"" -msgstr "" +msgstr "Завершаны торэнт \"%(name)s\"" #: deluge/plugins/Notifications/deluge_notifications/core.py:184 #, python-format @@ -5585,53 +5691,62 @@ msgid "" "Thank you,\n" "Deluge." msgstr "" +"Гэты ліст інфармуе, што Deluge скончыў спампоўку «%(name)s», які складаецца " +"з %(num_files)i файлаў.\n" +"Каб перастаць атрымліваць гэтыя паведамленні — выключыце апавяшчэнні ў " +"наладах Deluge.\n" +"\n" +"Дзякуем,\n" +"Deluge." #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1 msgid "Tray icon blinks enabled" -msgstr "" +msgstr "Мігценне значка ў трэі ўключана" #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2 msgid "Popups enabled" -msgstr "" +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>" -msgstr "" +msgstr "<b>Апавяшчэнні UI</b>" #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9 msgid "<b>Recipients</b>" -msgstr "" +msgstr "<b>Атрымальнікі</b>" #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10 msgid "Server requires TLS/SSL" -msgstr "" +msgstr "Сервер патрабуе TLS/SSL" #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13 msgid "<b>Email Notifications</b>" -msgstr "" +msgstr "<b>Паштовыя апавяшчэнні</b>" #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15 msgid "" "This configuration does not mean that you'll actually receive notifications " "for all these events." msgstr "" +"Гэтая канфігурацыя не азначае, што вы атрымаеце ўсе апавяшчэнні пра гэтыя " +"падзеі." #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16 msgid "Subscriptions" -msgstr "" +msgstr "Падпіскі" #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17 msgid "Sound Customization" -msgstr "" +msgstr "Налады гуку" #: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42 #: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53 msgid "Extractor" -msgstr "" +msgstr "Распакоўка" #: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1 msgid "Extract to:" @@ -5639,32 +5754,32 @@ msgstr "Распакаваць у:" #: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3 msgid "Create torrent name sub-folder" -msgstr "Стварыць падкаталог з назвай торэнту" +msgstr "Стварыць пад-папку з назвай торэнта" #: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4 msgid "" "This option will create a sub-folder using the torrent's name within the " "selected extract folder and put the extracted files there." msgstr "" -"Гэтая налада дазволіць стварыць падкаталог з назвай торэнту ўнутры выбранага " -"каталога і перамясціць туды распакаваныя файлы." +"Гэта налада дазволіць стварыць пад-папку з назвай торэнта ўнутры выбранай " +"папкі і перамясціць туды распакаваныя файлы." #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196 #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359 msgid "Scheduler" -msgstr "" +msgstr "Планавальнік" #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289 msgid "<b>Schedule</b>" -msgstr "" +msgstr "<b>Запланаваць</b>" #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301 msgid "Download Limit:" -msgstr "Абмежаванне хуткасці запампоўкі:" +msgstr "Абмежаванне спампоўкі:" #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310 msgid "Upload Limit:" -msgstr "Абмежаванне хуткасці раздачы:" +msgstr "Абмежаванне раздачы:" #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319 msgid "Active Torrents:" @@ -5672,11 +5787,11 @@ msgstr "Актыўныя торэнты:" #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328 msgid "Active Downloading:" -msgstr "" +msgstr "Актыўныя спампоўкі:" #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337 msgid "Active Seeding:" -msgstr "" +msgstr "Актыўныя сідаванні:" #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350 msgid "<b>Slow Settings</b>" @@ -5684,51 +5799,51 @@ msgstr "<b>Абмежаванні</ b>" #: deluge/ui/web/js/deluge-all/FileBrowser.js:13 msgid "File Browser" -msgstr "" +msgstr "Агляд файлаў" #: deluge/ui/web/js/deluge-all/FileBrowser.js:25 msgid "Back" -msgstr "" +msgstr "Назад" #: deluge/ui/web/js/deluge-all/FileBrowser.js:29 msgid "Forward" -msgstr "" +msgstr "Наперад" #: deluge/ui/web/js/deluge-all/FileBrowser.js:37 msgid "Home" -msgstr "" +msgstr "Хатняя" #: deluge/ui/web/js/deluge-all/Toolbar.js:32 msgid "Create" -msgstr "" +msgstr "Стварыць" #: deluge/ui/web/js/deluge-all/Toolbar.js:100 msgid "Help" -msgstr "" +msgstr "Даведка" #: deluge/ui/web/js/deluge-all/Toolbar.js:108 msgid "Logout" -msgstr "" +msgstr "Скончыць сеанс" #: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34 msgid "Save" -msgstr "" +msgstr "Захаваць" #: deluge/ui/web/js/deluge-all/AboutWindow.js:19 msgid "About Deluge" -msgstr "" +msgstr "Аб Deluge" #: deluge/ui/web/js/deluge-all/AboutWindow.js:102 msgid "Copyright 2007-2018 Deluge Team" -msgstr "" +msgstr "Copyright 2007-2018 Deluge Team" #: deluge/ui/web/js/deluge-all/RemoveWindow.js:33 msgid "Remove With Data" -msgstr "" +msgstr "Выдаліць з данымі" #: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17 msgid "Add Connection" -msgstr "" +msgstr "Дадаць злучэнне" #: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44 #: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44 @@ -5739,48 +5854,48 @@ msgstr "Хост:" #: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96 #, python-brace-format msgid "Unable to add host: {0}" -msgstr "" +msgstr "Немагчыма дадаць хост: {0}" #: deluge/ui/web/js/deluge-all/MoveStorage.js:37 msgid "Move" -msgstr "" +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" -msgstr "" +msgstr "Рэдагаваць злучэнне" #: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115 msgid "Unable to edit host" -msgstr "" +msgstr "Немагчыма рэдагаваць хост" #: deluge/ui/web/js/deluge-all/LoginWindow.js:22 #: deluge/ui/web/js/deluge-all/LoginWindow.js:31 msgid "Login" -msgstr "" +msgstr "Уваход" #: deluge/ui/web/js/deluge-all/LoginWindow.js:108 msgid "Login Failed" -msgstr "" +msgstr "Памылка ўваходу" #: deluge/ui/web/js/deluge-all/LoginWindow.js:109 msgid "You entered an incorrect password" -msgstr "" +msgstr "Вы ўвялі няправільны пароль" #: deluge/ui/web/js/deluge-all/TorrentGrid.js:228 msgid "Public" -msgstr "" +msgstr "Публічны" #: deluge/ui/web/js/deluge-all/TorrentGrid.js:292 msgid "Last Transfer" -msgstr "" +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" @@ -5788,46 +5903,46 @@ msgstr "Максімальная колькасць злучэнняў" #: deluge/ui/web/js/deluge-all/Statusbar.js:97 msgid "Download Speed" -msgstr "Хуткасць запампоўкі" +msgstr "Хуткасць спампоўкі" #: deluge/ui/web/js/deluge-all/Statusbar.js:102 #: deluge/ui/web/js/deluge-all/Statusbar.js:161 #: deluge/ui/web/js/deluge-all/Menus.js:79 #: deluge/ui/web/js/deluge-all/Menus.js:124 msgid "5 KiB/s" -msgstr "" +msgstr "5 КіБ/с" #: deluge/ui/web/js/deluge-all/Statusbar.js:108 #: deluge/ui/web/js/deluge-all/Statusbar.js:167 #: deluge/ui/web/js/deluge-all/Menus.js:85 #: deluge/ui/web/js/deluge-all/Menus.js:130 msgid "10 KiB/s" -msgstr "" +msgstr "10 КіБ/с" #: deluge/ui/web/js/deluge-all/Statusbar.js:114 #: deluge/ui/web/js/deluge-all/Statusbar.js:173 #: deluge/ui/web/js/deluge-all/Menus.js:91 #: deluge/ui/web/js/deluge-all/Menus.js:136 msgid "30 KiB/s" -msgstr "" +msgstr "30 КіБ/с" #: deluge/ui/web/js/deluge-all/Statusbar.js:120 #: deluge/ui/web/js/deluge-all/Statusbar.js:179 #: deluge/ui/web/js/deluge-all/Menus.js:97 #: deluge/ui/web/js/deluge-all/Menus.js:142 msgid "80 KiB/s" -msgstr "" +msgstr "80 КіБ/с" #: deluge/ui/web/js/deluge-all/Statusbar.js:126 #: deluge/ui/web/js/deluge-all/Statusbar.js:185 #: deluge/ui/web/js/deluge-all/Menus.js:103 #: deluge/ui/web/js/deluge-all/Menus.js:148 msgid "300 KiB/s" -msgstr "" +msgstr "300 КіБ/с" #: deluge/ui/web/js/deluge-all/Statusbar.js:145 msgid "Set Maximum Download Speed" -msgstr "Усталяваць максімальную хуткасць запампоўкі" +msgstr "Усталяваць максімальную хуткасць спампоўкі" #: deluge/ui/web/js/deluge-all/Statusbar.js:156 msgid "Upload Speed" @@ -5839,49 +5954,50 @@ msgstr "Усталяваць максімальную хуткасць разд #: deluge/ui/web/js/deluge-all/Statusbar.js:215 msgid "Protocol Traffic Download/Upload" -msgstr "Трафік пратакола - Запампоўка/Аддача" +msgstr "Трафік пратакола Спампоўка/Раздача" #: deluge/ui/web/js/deluge-all/Statusbar.js:242 msgid "Freespace in download folder" -msgstr "" +msgstr "Вольнае месца ў папцы спампоўкі" #: deluge/ui/web/js/deluge-all/Statusbar.js:357 #, python-brace-format msgid "<b>IP</b> {0}" -msgstr "" +msgstr "<b>IP</b> {0}" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:33 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:187 msgid "Connect" -msgstr "" +msgstr "Злучыцца" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:120 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:197 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:379 msgid "Stop Daemon" -msgstr "" +msgstr "Спыніць дэман" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:185 msgid "Disconnect" -msgstr "" +msgstr "Адлучыцца" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:204 msgid "Start Daemon" -msgstr "" +msgstr "Запусціць дэман" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:322 msgid "Change Default Password" -msgstr "" +msgstr "Змяніць пароль па змаўчанні" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:324 msgid "" "We recommend changing the default password.<br><br>Would you like to change " "it now?" msgstr "" +"Мы рэкамендавалі змену пароля па змаўчанні.<br><br>Жадаеце змяніць яго цяпер?" #: deluge/ui/web/js/deluge-all/Sidebar.js:13 msgid "Tracker Host" -msgstr "" +msgstr "Хост трэкера" #: deluge/ui/web/js/deluge-all/Sidebar.js:33 msgid "Filters" @@ -5889,68 +6005,68 @@ msgstr "Фільтры" #: deluge/ui/web/js/deluge-all/UI.js:142 msgid "Connection restored" -msgstr "" +msgstr "Злучэнне адноўлена" #: deluge/ui/web/js/deluge-all/UI.js:153 msgid "Lost Connection" -msgstr "" +msgstr "Злучэнне згублена" #: deluge/ui/web/js/deluge-all/UI.js:154 msgid "The connection to the webserver has been lost!" -msgstr "" +msgstr "Злучэнне з вэб-серверам згублена!" #: deluge/ui/web/js/deluge-all/UI.js:160 msgid "Lost connection to webserver" -msgstr "" +msgstr "Згублена злучэнне з вэб-серверам" #: deluge/ui/web/js/deluge-all/Menus.js:72 msgid "D/L Speed Limit" -msgstr "" +msgstr "Ліміт хуткасці Спам" #: deluge/ui/web/js/deluge-all/Menus.js:117 msgid "U/L Speed Limit" -msgstr "" +msgstr "Ліміт хуткасці Разд" #: deluge/ui/web/js/deluge-all/Menus.js:162 msgid "Connection Limit" -msgstr "" +msgstr "Ліміт злучэння" #: deluge/ui/web/js/deluge-all/Menus.js:207 msgid "Upload Slot Limit" -msgstr "" +msgstr "Ліміт слота раздачы" #: deluge/ui/web/js/deluge-all/Menus.js:316 msgid "Update Tracker" -msgstr "" +msgstr "Абнавіць трэкер" #: deluge/ui/web/js/deluge-all/Menus.js:339 msgid "Force Recheck" -msgstr "" +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" -msgstr "" +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:" -msgstr "" +msgstr "Перамяшчэнне завершана:" #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272 #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116 msgid "General" -msgstr "" +msgstr "Асноўныя" #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279 msgid "Private" @@ -5958,11 +6074,11 @@ 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" -msgstr "" +msgstr "True" #: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50 msgid "Be alerted about new releases" @@ -5973,224 +6089,226 @@ msgid "" "Help us improve Deluge by sending us your Python version, PyGTK version, OS " "and processor types. Absolutely no other information is sent." msgstr "" +"Дапамажыце нам палепшыць Deluge, дашліце вашы версіі Python, PyGTK, АС і тып " +"працэсара. Больш ніякай інфармацыі не адсылаецца." #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215 msgid "Pause torrent" -msgstr "" +msgstr "Прыпыніць торэнт" #: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17 msgid "Install Plugin" -msgstr "" +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" -msgstr "" +msgstr "Выбраць" #: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46 msgid "Plugin Egg" -msgstr "" +msgstr "Плагін" #: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49 msgid "Browse..." -msgstr "" +msgstr "Аглядзець..." #: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59 msgid "Uploading your plugin..." -msgstr "" +msgstr "Запампоўваецца ваш плагін..." #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52 #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162 msgid "Maximum Connections:" -msgstr "Максімальную колькасць злучэнняў:" +msgstr "Макс колькасць злучэнняў:" #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74 #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184 msgid "Maximum Download Speed (KiB/s):" -msgstr "Максімальная хуткасць прыёму (КБ/с):" +msgstr "Макс хуткасць спампоўкі (КБ/с):" #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85 #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195 msgid "Maximum Upload Speed (KiB/s):" -msgstr "Максімальная хуткасць раздачы (КБ/с):" +msgstr "Макс хуткасць раздачы (КБ/с):" #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96 msgid "Maximum Half-Open Connections:" -msgstr "Максімальную колькасць паў-адкрытых злучэнняў:" +msgstr "Макс колькасць паў-адкрытых злучэнняў:" #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107 msgid "Maximum Connection Attempts per Second:" -msgstr "Максімальная колькасць спробаў злучэння ў секунду:" +msgstr "Макс колькасць спроб злучэння ў секунду:" #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173 msgid "Maximum Upload Slots:" -msgstr "Максімальная колькасць слотаў раздачы:" +msgstr "Макс колькасць слотаў раздачы:" #: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43 msgid "Cache Size (16 KiB Blocks):" -msgstr "" +msgstr "Памер кэша (блокі 16 Кіб):" #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132 msgid "Force Use of Proxy" -msgstr "" +msgstr "Прымусова выкарыстоўваць проксі" #: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116 msgid "Find More" -msgstr "" +msgstr "Знайсці больш" #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69 msgid "Use Random Port" -msgstr "" +msgstr "Выкарыстоўваць выпадковы порт" #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241 msgid "Type Of Service" -msgstr "" +msgstr "Тып сервіса" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53 msgid "Show filters with zero torrents" -msgstr "" +msgstr "Паказваць фільтры з нулявымі торэнтамі" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60 msgid "Allow the use of multiple filters at once" -msgstr "" +msgstr "Дазволіць выкарыстанне адразу некалькіх фільтраў" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94 msgid "WebUI Password" -msgstr "" +msgstr "Пароль WebUI" #: 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:" -msgstr "" +msgstr "Пацвердзіць:" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124 msgid "Server" -msgstr "" +msgstr "Сервер" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140 msgid "Session Timeout:" -msgstr "" +msgstr "Таймаўт сесіі:" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165 msgid "Enable SSL (paths relative to Deluge config folder)" -msgstr "" +msgstr "Уключыць SSL (шляхі адносна папкі з канфігамі Deluge)" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177 msgid "Private Key:" -msgstr "" +msgstr "Прыватны ключ:" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187 msgid "Certificate:" -msgstr "" +msgstr "Сертыфікат:" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205 msgid "WebUI Language Changed" -msgstr "" +msgstr "Мова WebUI зменена" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207 msgid "Do you want to refresh the page now to use the new language?" -msgstr "" +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!" -msgstr "" +msgstr "Ваш пароль не супадае!" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260 msgid "Your old password was incorrect!" -msgstr "" +msgstr "Ваш стары пароль быў няправільны!" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269 msgid "Change Successful" -msgstr "" +msgstr "Паспяховая змена" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270 msgid "Your password was successfully changed!" -msgstr "" +msgstr "Ваш пароль быў паспяхова зменены!" #: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13 msgid "Add from Url" -msgstr "" +msgstr "Дадаць з Url" #: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37 #: deluge/ui/web/js/deluge-all/add/AddWindow.js:143 msgid "Url" -msgstr "" +msgstr "Url" #: 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" -msgstr "" +msgstr "Не ўдалося спапмаваць торэнт" #: deluge/ui/web/js/deluge-all/add/AddWindow.js:133 msgid "File" -msgstr "" +msgstr "Файл" #: 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..." -msgstr "" +msgstr "Раздача вашага торэнта..." #: deluge/ui/web/js/deluge-all/add/AddWindow.js:292 msgid "Failed to upload torrent" -msgstr "" +msgstr "Не ўдалося раздаць торэнт" #: deluge/ui/web/js/deluge-all/add/AddWindow.js:317 msgid "Not a valid torrent" -msgstr "" +msgstr "Некарэктны торэнт" #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50 msgid "Move Completed Folder" -msgstr "" +msgstr "Перамясціць завершаную папку" #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85 msgid "Max Down Speed" -msgstr "" +msgstr "Макс хуткасць спампоўкі" #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93 msgid "Max Up Speed" -msgstr "" +msgstr "Макс хуткасць раздачы" #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125 msgid "Add In Paused State" -msgstr "" +msgstr "Дадаць у спыненым стане" #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161 msgid "Super Seed" -msgstr "" +msgstr "Супер сід" #: deluge/ui/web/js/deluge-all/add/FilesTab.js:43 msgid "Download" -msgstr "" +msgstr "Спампаваць" #: deluge/ui/web/render/tab_status.html:11 msgid "ETA:" -msgstr "" +msgstr "ETA:" #: deluge/ui/web/render/tab_status.html:26 msgid "Date Added:" -msgstr "" +msgstr "Дата дададзена:" diff --git a/deluge/i18n/bg.po b/deluge/i18n/bg.po index 0f03e63b0..027b801c9 100644 --- a/deluge/i18n/bg.po +++ b/deluge/i18n/bg.po @@ -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" @@ -4440,16 +4440,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4458,7 +4458,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/bn.po b/deluge/i18n/bn.po index 029bf014b..876703145 100644 --- a/deluge/i18n/bn.po +++ b/deluge/i18n/bn.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/bs.po b/deluge/i18n/bs.po index d66224b3b..3261557f0 100644 --- a/deluge/i18n/bs.po +++ b/deluge/i18n/bs.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/ca.po b/deluge/i18n/ca.po index 926dfea5e..e060aa186 100644 --- a/deluge/i18n/ca.po +++ b/deluge/i18n/ca.po @@ -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" @@ -4541,18 +4541,18 @@ msgstr "_Normal" msgid "_High" msgstr "_Alta" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "Equip del Deluge" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" "El Deluge és un client de BitTorrent lleuger, de progamari lliure i " "multiplataforma." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4561,13 +4561,13 @@ 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/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " @@ -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>Languge</b>" +#~ msgid "<b>Language</b>" #~ msgstr "<b>Idioma</b>" diff --git a/deluge/i18n/cs.po b/deluge/i18n/cs.po index 82c3c78f4..af5a9c8ee 100644 --- a/deluge/i18n/cs.po +++ b/deluge/i18n/cs.po @@ -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" @@ -4463,16 +4463,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4481,7 +4481,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/cy.po b/deluge/i18n/cy.po index 41ecee408..4f954491a 100644 --- a/deluge/i18n/cy.po +++ b/deluge/i18n/cy.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/da.po b/deluge/i18n/da.po index 758a19a8e..81c282521 100644 --- a/deluge/i18n/da.po +++ b/deluge/i18n/da.po @@ -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" @@ -4478,16 +4478,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4496,7 +4496,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/de.po b/deluge/i18n/de.po index 8ebb637cb..10f0dc255 100644 --- a/deluge/i18n/de.po +++ b/deluge/i18n/de.po @@ -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 @@ -4481,16 +4481,16 @@ msgstr "_Normal" msgid "_High" msgstr "_Hoch" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "Deluge-Team" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4499,7 +4499,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " @@ -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..." diff --git a/deluge/i18n/el.po b/deluge/i18n/el.po index 310e2a9f5..0b69faafa 100644 --- a/deluge/i18n/el.po +++ b/deluge/i18n/el.po @@ -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" @@ -4491,16 +4491,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4509,7 +4509,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/en_AU.po b/deluge/i18n/en_AU.po index 62fbacbaa..4e57aaa82 100644 --- a/deluge/i18n/en_AU.po +++ b/deluge/i18n/en_AU.po @@ -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" @@ -4469,16 +4469,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4487,7 +4487,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/en_CA.po b/deluge/i18n/en_CA.po index fe0a5806f..57e64826f 100644 --- a/deluge/i18n/en_CA.po +++ b/deluge/i18n/en_CA.po @@ -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" @@ -4469,16 +4469,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4487,7 +4487,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/en_GB.po b/deluge/i18n/en_GB.po index 64c21db44..e31fc0284 100644 --- a/deluge/i18n/en_GB.po +++ b/deluge/i18n/en_GB.po @@ -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-09-19 08:11+0000\n" +"Last-Translator: Andi Chandler <Unknown>\n" "Language-Team: English (United Kingdom) <en_GB@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,35 +96,35 @@ 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" -msgstr "" +msgstr "Common Options" #: deluge/argparserbase.py:175 msgid "Print this help message" -msgstr "" +msgstr "Print this help message" #: deluge/argparserbase.py:182 msgid "Print version information" -msgstr "" +msgstr "Print version information" #: deluge/argparserbase.py:194 msgid "Set the config directory path" -msgstr "" +msgstr "Set the config directory path" #: deluge/argparserbase.py:200 msgid "Output to specified logfile instead of stdout" -msgstr "" +msgstr "Output to specified logfile instead of stdout" #: deluge/argparserbase.py:206 msgid "Set the log level (none, error, warning, info, debug)" -msgstr "" +msgstr "Set the log level (none, error, warning, info, debug)" #: deluge/argparserbase.py:215 #, python-format @@ -132,10 +132,12 @@ msgid "" "Enable logfile rotation, with optional maximum logfile size, default: " "%(const)s (Logfile rotation count is 5)" msgstr "" +"Enable logfile rotation, with optional maximum logfile size, default: " +"%(const)s (Logfile rotation count is 5)" #: deluge/argparserbase.py:223 msgid "Quieten logging output (Same as `--loglevel none`)" -msgstr "" +msgstr "Quieten logging output (Same as `--loglevel none`)" #: deluge/argparserbase.py:231 #, python-format @@ -143,51 +145,54 @@ msgid "" "Profile %(prog)s with cProfile. Outputs to stdout unless a filename is " "specified" msgstr "" +"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is " +"specified" #: deluge/argparserbase.py:351 msgid "Process Control Options" -msgstr "" +msgstr "Process Control Options" #: deluge/argparserbase.py:357 msgid "Pidfile to store the process id" -msgstr "" +msgstr "Pidfile to store the process id" #: deluge/argparserbase.py:365 msgid "Do not daemonize (fork) this process" -msgstr "" +msgstr "Do not daemonise (fork) this process" #: deluge/argparserbase.py:379 msgid "Change to this user on startup (Requires root)" -msgstr "" +msgstr "Change to this user on startup (Requires root)" #: deluge/argparserbase.py:386 msgid "Change to this group on startup (Requires root)" -msgstr "" +msgstr "Change to this group on startup (Requires root)" #: deluge/core/daemon_entry.py:25 msgid "Daemon Options" -msgstr "" +msgstr "Daemon Options" #: deluge/core/daemon_entry.py:31 msgid "IP address to listen for UI connections" -msgstr "" +msgstr "IP address to listen for UI connections" #: deluge/core/daemon_entry.py:39 msgid "Port to listen for UI connections on" -msgstr "" +msgstr "Port to listen for UI connections on" #: deluge/core/daemon_entry.py:47 msgid "IP address to listen for BitTorrent connections" -msgstr "" +msgstr "IP address to listen for BitTorrent connections" #: deluge/core/daemon_entry.py:56 msgid "" "The network interface name or IP address for outgoing BitTorrent connections." msgstr "" +"The network interface name or IP address for outgoing BitTorrent connections." #: deluge/core/daemon_entry.py:63 msgid "Config keys to be unmodified by `set_config` RPC" -msgstr "" +msgstr "Config keys to be unmodified by `set_config` RPC" #: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130 #: deluge/ui/web/js/deluge-all/UI.js:18 @@ -202,7 +207,7 @@ msgstr "Active" #: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20 msgid "Allocating" -msgstr "" +msgstr "Allocating" #: deluge/ui/common.py:40 deluge/ui/web/js/deluge-all/UI.js:21 #: deluge/ui/web/js/deluge-all/UI.js:25 @@ -288,7 +293,7 @@ msgstr "Uploaded" #: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:260 msgid "Remaining" -msgstr "" +msgstr "Remaining" #: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:165 @@ -321,11 +326,11 @@ msgstr "Up Limit" #: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101 msgid "Max Connections" -msgstr "" +msgstr "Max Connections" #: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109 msgid "Max Upload Slots" -msgstr "" +msgstr "Max Upload Slots" #: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:136 @@ -336,7 +341,7 @@ msgstr "Peers" #: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:128 msgid "Seeds" -msgstr "" +msgstr "Seeds" #: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:173 @@ -346,7 +351,7 @@ msgstr "Avail" #: 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 "Seeds:Peers" #: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203 #: deluge/ui/gtk3/torrentview.py:387 @@ -367,33 +372,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 "Download Folder" #: deluge/ui/common.py:75 msgid "Seeding Time" -msgstr "" +msgstr "Seeding Time" #: deluge/ui/common.py:76 msgid "Active Time" -msgstr "" +msgstr "Active Time" #: deluge/ui/common.py:78 msgid "Last Activity" -msgstr "" +msgstr "Last Activity" #: deluge/ui/common.py:81 msgid "Finished Time" -msgstr "" +msgstr "Finished Time" #: 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 "Complete Seen" #: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:197 msgid "Completed" -msgstr "" +msgstr "Completed" #: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:158 @@ -404,7 +409,7 @@ msgstr "ETA" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:236 msgid "Shared" -msgstr "" +msgstr "Shared" #: 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 +420,7 @@ msgstr "Prioritise First/Last" #: 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 "Sequential Download" #: deluge/ui/common.py:97 deluge/ui/common.py:98 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35 @@ -427,27 +432,27 @@ msgstr "Auto Managed" #: deluge/ui/common.py:99 msgid "Stop At Ratio" -msgstr "" +msgstr "Stop At Ratio" #: deluge/ui/common.py:100 msgid "Stop Ratio" -msgstr "" +msgstr "Stop Ratio" #: deluge/ui/common.py:101 msgid "Remove At Ratio" -msgstr "" +msgstr "Remove At Ratio" #: deluge/ui/common.py:102 deluge/ui/common.py:108 msgid "Move On Completed" -msgstr "" +msgstr "Move On Completed" #: deluge/ui/common.py:104 msgid "Move Completed Path" -msgstr "" +msgstr "Move Completed Path" #: deluge/ui/common.py:112 msgid "Move On Completed Path" -msgstr "" +msgstr "Move On Completed Path" #: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135 #: deluge/ui/gtk3/torrentview.py:416 @@ -455,7 +460,7 @@ msgstr "" #: deluge/ui/web/js/deluge-all/FilterPanel.js:32 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:221 msgid "Owner" -msgstr "" +msgstr "Owner" #: deluge/ui/common.py:116 msgid "Pieces" @@ -463,13 +468,13 @@ msgstr "Pieces" #: deluge/ui/common.py:117 msgid "Seed Rank" -msgstr "" +msgstr "Seed Rank" #: 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 "Super Seeding" #: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122 msgid "Warning" @@ -567,28 +572,30 @@ msgstr "Plug-ins" #: 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 "Skip" #: 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 "Low" #: 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 "Normal" #: 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 "High" #: deluge/ui/client.py:681 msgid "" "Deluge cannot find the `deluged` executable, check that the deluged package " "is installed, or added to your PATH." msgstr "" +"Deluge cannot find the `deluged` executable, check that the deluged package " +"is installed, or added to your PATH." #: deluge/ui/countries.py:10 msgid "Afghanistan" @@ -1448,7 +1455,7 @@ msgstr "Syrian Arab Republic" #: deluge/ui/countries.py:224 msgid "Taiwan" -msgstr "" +msgstr "Taiwan" #: deluge/ui/countries.py:225 msgid "Tajikistan" @@ -1576,45 +1583,47 @@ msgstr "Zimbabwe" #: deluge/ui/ui_entry.py:51 msgid "UI Options" -msgstr "" +msgstr "UI Options" #: deluge/ui/ui_entry.py:57 msgid "Set the default UI to be run, when no UI is specified" -msgstr "" +msgstr "Set the default UI to be run, when no UI is specified" #: deluge/ui/ui_entry.py:91 msgid "" "Alternative UI to launch, with optional ui args \n" " (default UI: *)" msgstr "" +"Alternative UI to launch, with optional UI args \n" +" (default UI: *)" #: deluge/ui/web/web.py:32 msgid "Web Server Options" -msgstr "" +msgstr "Web Server Options" #: deluge/ui/web/web.py:38 msgid "IP address for web server to listen on" -msgstr "" +msgstr "IP address for web server to listen on" #: deluge/ui/web/web.py:46 msgid "Port for web server to listen on" -msgstr "" +msgstr "Port for web server to listen on" #: deluge/ui/web/web.py:53 msgid "Set the base path that the ui is running on" -msgstr "" +msgstr "Set the base path that the UI is running on" #: deluge/ui/web/web.py:56 msgid "Force the web server to use SSL" -msgstr "" +msgstr "Force the web server to use SSL" #: deluge/ui/web/web.py:61 msgid "Force the web server to disable SSL" -msgstr "" +msgstr "Force the web server to disable SSL" #: deluge/ui/web/json_api.py:868 msgid "Daemon does not exist" -msgstr "" +msgstr "Daemon does not exist" #: deluge/ui/web/json_api.py:875 msgid "Daemon not running" @@ -1660,13 +1669,13 @@ msgstr "Choose a file" #: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2 #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2 msgid "_Cancel" -msgstr "" +msgstr "_Cancel" #: deluge/ui/gtk3/createtorrentdialog.py:134 #: deluge/ui/gtk3/createtorrentdialog.py:171 #: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160 msgid "_Open" -msgstr "" +msgstr "_Open" #: deluge/ui/gtk3/createtorrentdialog.py:165 #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28 @@ -1682,7 +1691,7 @@ msgstr "Save .torrent file" #: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3 #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30 msgid "_Save" -msgstr "" +msgstr "_Save" #: deluge/ui/gtk3/createtorrentdialog.py:271 #: deluge/ui/gtk3/addtorrentdialog.py:712 @@ -1705,7 +1714,7 @@ msgstr "Enter your password to Quit Deluge..." #: deluge/ui/gtk3/mainwindow.py:343 #, python-brace-format msgid "D: {download_rate} U: {upload_rate} - Deluge" -msgstr "" +msgstr "D: {download_rate} U: {upload_rate} - Deluge" #: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26 #: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96 @@ -1719,16 +1728,16 @@ msgstr "Deluge" #: deluge/ui/gtk3/path_combo_chooser.py:393 #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20 msgid "Edit path" -msgstr "" +msgstr "Edit path" #: deluge/ui/gtk3/path_combo_chooser.py:395 #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21 msgid "Remove path" -msgstr "" +msgstr "Remove path" #: deluge/ui/gtk3/options_tab.py:136 msgid "_Apply to selected" -msgstr "" +msgstr "_Apply to selected" #: deluge/ui/gtk3/aboutdialog.py:40 #, python-format @@ -1824,17 +1833,18 @@ msgstr "Torrent" #: deluge/ui/gtk3/addtorrentdialog.py:232 #, python-format msgid "Add Torrents (%d)" -msgstr "" +msgstr "Add Torrents (%d)" #: deluge/ui/gtk3/addtorrentdialog.py:238 msgid "Duplicate torrent(s)" -msgstr "" +msgstr "Duplicate torrent(s)" #: deluge/ui/gtk3/addtorrentdialog.py:240 #, python-format msgid "" "You cannot add the same torrent twice. %d torrents were already added." msgstr "" +"You cannot add the same torrent twice. %d torrents were already added." #: deluge/ui/gtk3/addtorrentdialog.py:255 msgid "Invalid File" @@ -1843,11 +1853,11 @@ msgstr "Invalid File" #: deluge/ui/gtk3/addtorrentdialog.py:290 #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8 msgid "Please wait for files..." -msgstr "" +msgstr "Please wait for files..." #: deluge/ui/gtk3/addtorrentdialog.py:296 msgid "Unable to download files for this magnet" -msgstr "" +msgstr "Unable to download files for this magnet" #: deluge/ui/gtk3/addtorrentdialog.py:694 msgid "Choose a .torrent file" @@ -1875,18 +1885,18 @@ msgstr "Failed to download:" #: deluge/ui/gtk3/dialogs.py:110 msgid "_No" -msgstr "" +msgstr "_No" #: deluge/ui/gtk3/dialogs.py:110 msgid "_Yes" -msgstr "" +msgstr "_Yes" #: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156 #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2 #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2 #: deluge/ui/gtk3/glade/connection_manager.ui.h:2 msgid "_Close" -msgstr "" +msgstr "_Close" #: deluge/ui/gtk3/dialogs.py:179 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195 @@ -1896,12 +1906,12 @@ msgstr "Details:" #: deluge/ui/gtk3/dialogs.py:200 msgid "Authenticate" -msgstr "" +msgstr "Authenticate" #: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211 #: deluge/ui/gtk3/glade/connection_manager.ui.h:3 msgid "C_onnect" -msgstr "" +msgstr "C_onnect" #: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139 @@ -1929,25 +1939,25 @@ msgstr "Password:" #: deluge/ui/gtk3/dialogs.py:257 msgid "Edit Account" -msgstr "" +msgstr "Edit Account" #: deluge/ui/gtk3/dialogs.py:258 msgid "Edit existing account" -msgstr "" +msgstr "Edit existing account" #: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38 msgid "_Apply" -msgstr "" +msgstr "_Apply" #: deluge/ui/gtk3/dialogs.py:270 msgid "New Account" -msgstr "" +msgstr "New Account" #: deluge/ui/gtk3/dialogs.py:271 msgid "Create a new account" -msgstr "" +msgstr "Create a new account" #: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191 @@ -1956,11 +1966,11 @@ msgstr "" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20 #: deluge/ui/gtk3/glade/connection_manager.ui.h:4 msgid "_Add" -msgstr "" +msgstr "_Add" #: deluge/ui/gtk3/dialogs.py:289 msgid "Authentication Level:" -msgstr "" +msgstr "Authentication Level:" #: deluge/ui/gtk3/dialogs.py:423 msgid "Password Protected" @@ -1980,7 +1990,7 @@ msgstr "Password Protected" #: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3 #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3 msgid "_OK" -msgstr "" +msgstr "_OK" #: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83 msgid "Other..." @@ -1992,19 +2002,19 @@ msgstr "Not Connected" #: deluge/ui/gtk3/statusbar.py:175 msgid "Connections (Limit)" -msgstr "" +msgstr "Connections (Limit)" #: deluge/ui/gtk3/statusbar.py:182 msgid "Download Speed (Limit)" -msgstr "" +msgstr "Download Speed (Limit)" #: deluge/ui/gtk3/statusbar.py:189 msgid "Upload Speed (Limit)" -msgstr "" +msgstr "Upload Speed (Limit)" #: deluge/ui/gtk3/statusbar.py:196 msgid "Protocol Traffic (Down:Up)" -msgstr "" +msgstr "Protocol Traffic (Down:Up)" #: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234 msgid "DHT Nodes" @@ -2016,70 +2026,70 @@ msgstr "Free Disk Space" #: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226 msgid "External IP Address" -msgstr "" +msgstr "External IP Address" #: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409 #, python-format msgid "<b>IP</b> <small>%s</small>" -msgstr "" +msgstr "<b>IP</b> <small>%s</small>" #: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408 #: deluge/ui/console/widgets/statusbars.py:121 #: deluge/ui/web/js/deluge-all/Statusbar.js:358 msgid "n/a" -msgstr "" +msgstr "n/a" #: deluge/ui/gtk3/statusbar.py:220 msgid "<b><small>Port Issue</small></b>" -msgstr "" +msgstr "<b><small>Port Issue</small></b>" #: deluge/ui/gtk3/statusbar.py:222 msgid "No incoming connections, check port forwarding" -msgstr "" +msgstr "No incoming connections, check port forwarding" #: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394 #: deluge/ui/gtk3/menubar.py:447 msgid "Download Speed Limit" -msgstr "" +msgstr "Download Speed Limit" #: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395 #: deluge/ui/gtk3/menubar.py:448 msgid "Set the maximum download speed" -msgstr "" +msgstr "Set the maximum download speed" #: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409 #: deluge/ui/gtk3/menubar.py:453 msgid "Upload Speed Limit" -msgstr "" +msgstr "Upload Speed Limit" #: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410 #: deluge/ui/gtk3/menubar.py:454 msgid "Set the maximum upload speed" -msgstr "" +msgstr "Set the maximum upload speed" #: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459 msgid "Incoming Connections" -msgstr "" +msgstr "Incoming Connections" #: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460 msgid "Set the maximum incoming connections" -msgstr "" +msgstr "Set the maximum incoming connections" #: deluge/ui/gtk3/tab_data_funcs.py:28 #, python-brace-format msgid "{state} {percent}%" -msgstr "" +msgstr "{state} {percent}%" #: deluge/ui/gtk3/tab_data_funcs.py:30 #, python-brace-format msgid "{state}: {err_msg}" -msgstr "" +msgstr "{state}: {err_msg}" #: deluge/ui/gtk3/tab_data_funcs.py:42 #: deluge/ui/gtk3/torrentview_data_funcs.py:284 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:74 msgid "Never" -msgstr "" +msgstr "Never" #: deluge/ui/gtk3/tab_data_funcs.py:96 msgid "Yes" @@ -2128,7 +2138,7 @@ msgstr "_Options" #: deluge/ui/gtk3/torrentdetails.py:148 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52 msgid "_Trackers" -msgstr "" +msgstr "_Trackers" #: deluge/ui/gtk3/systemtray.py:184 msgid "Not Connected..." @@ -2169,26 +2179,32 @@ msgid "" "A Deluge daemon (deluged) is already running.\n" "To use Standalone mode, stop local daemon and restart Deluge." msgstr "" +"A Deluge daemon (deluged) is already running.\n" +"To use Standalone mode, stop the local daemon and restart Deluge." #: deluge/ui/gtk3/gtkui.py:319 msgid "" "Only Thin Client mode is available because libtorrent is not installed.\n" "To use Standalone mode, please install libtorrent package." msgstr "" +"Only Thin Client mode is available because libtorrent is not installed.\n" +"To use Standalone mode, please install libtorrent package." #: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331 msgid "" "Only Thin Client mode is available due to unknown Import Error.\n" "To use Standalone mode, please see logs for error details." msgstr "" +"Only Thin Client mode is available due to unknown Import Error.\n" +"To use Standalone mode, please see logs for error details." #: deluge/ui/gtk3/gtkui.py:349 msgid "Continue in Thin Client mode?" -msgstr "" +msgstr "Continue in Thin Client mode?" #: deluge/ui/gtk3/gtkui.py:350 msgid "Change User Interface Mode" -msgstr "" +msgstr "Change User Interface Mode" #: deluge/ui/gtk3/connectionmanager.py:52 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:56 @@ -2233,7 +2249,7 @@ msgstr "_Stop Daemon" #: deluge/ui/gtk3/connectionmanager.py:255 msgid "_Disconnect" -msgstr "" +msgstr "_Disconnect" #: deluge/ui/gtk3/connectionmanager.py:280 msgid "Unable to start daemon!" @@ -2241,25 +2257,27 @@ msgstr "Unable to start daemon!" #: deluge/ui/gtk3/connectionmanager.py:281 msgid "Check deluged package is installed and logs for further details" -msgstr "" +msgstr "Check deluged package is installed and logs for further details" #: deluge/ui/gtk3/connectionmanager.py:332 msgid "Incompatible Client" -msgstr "" +msgstr "Incompatible Client" #: deluge/ui/gtk3/connectionmanager.py:343 msgid "" "Auto-starting the daemon locally is not enabled. See \"Options\" on the " "\"Connection Manager\"." msgstr "" +"Auto-starting the daemon locally is not enabled. See \"Options\" on the " +"\"Connection Manager\"." #: deluge/ui/gtk3/connectionmanager.py:346 msgid "Failed To Connect" -msgstr "" +msgstr "Failed To Connect" #: deluge/ui/gtk3/connectionmanager.py:403 msgid "Edit Host" -msgstr "" +msgstr "Edit Host" #: deluge/ui/gtk3/connectionmanager.py:428 msgid "Error Adding Host" @@ -2267,7 +2285,7 @@ msgstr "Error Adding Host" #: deluge/ui/gtk3/connectionmanager.py:464 msgid "Error Updating Host" -msgstr "" +msgstr "Error Updating Host" #: deluge/ui/gtk3/preferences.py:131 #: deluge/ui/console/cmdline/commands/connect.py:33 @@ -2298,33 +2316,33 @@ msgstr "Plug-in" #: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886 msgid "Attention" -msgstr "" +msgstr "Attention" #: deluge/ui/gtk3/preferences.py:876 msgid "You must choose a language" -msgstr "" +msgstr "You must choose a language" #: deluge/ui/gtk3/preferences.py:887 msgid "You must now restart the deluge UI for the changes to take effect." -msgstr "" +msgstr "You must now restart the Deluge UI for the changes to take effect." #: deluge/ui/gtk3/preferences.py:940 msgid "Thinclient" -msgstr "" +msgstr "Thinclient" #: deluge/ui/gtk3/preferences.py:940 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18 msgid "Standalone" -msgstr "" +msgstr "Standalone" #: deluge/ui/gtk3/preferences.py:942 msgid "Switching Deluge Client Mode..." -msgstr "" +msgstr "Switching Deluge Client Mode..." #: deluge/ui/gtk3/preferences.py:943 #, python-format msgid "Do you want to restart to use %s mode?" -msgstr "" +msgstr "Do you want to restart to use %s mode?" #: deluge/ui/gtk3/preferences.py:1154 msgid "Select the Plugin" @@ -2336,35 +2354,35 @@ msgstr "Plug-in Eggs" #: deluge/ui/gtk3/preferences.py:1297 msgid "Server Side Error" -msgstr "" +msgstr "Server Side Error" #: deluge/ui/gtk3/preferences.py:1298 msgid "An error occurred on the server" -msgstr "" +msgstr "An error occurred on the server" #: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375 msgid "Error Adding Account" -msgstr "" +msgstr "Error Adding Account" #: deluge/ui/gtk3/preferences.py:1369 msgid "Authentication failed" -msgstr "" +msgstr "Authentication failed" #: deluge/ui/gtk3/preferences.py:1376 msgid "An error occurred while adding account" -msgstr "" +msgstr "An error occurred while adding account" #: deluge/ui/gtk3/preferences.py:1408 msgid "Error Updating Account" -msgstr "" +msgstr "Error Updating Account" #: deluge/ui/gtk3/preferences.py:1409 msgid "An error occurred while updating account" -msgstr "" +msgstr "An error occurred while updating account" #: deluge/ui/gtk3/preferences.py:1427 msgid "Remove Account" -msgstr "" +msgstr "Remove Account" #: deluge/ui/gtk3/preferences.py:1429 #, python-format @@ -2372,18 +2390,20 @@ msgid "" "Are you sure you want to remove the account with the username " "\"%(username)s\"?" msgstr "" +"Are you sure you want to remove the account with the username " +"\"%(username)s\"?" #: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448 msgid "Error Removing Account" -msgstr "" +msgstr "Error Removing Account" #: deluge/ui/gtk3/preferences.py:1442 msgid "Auhentication failed" -msgstr "" +msgstr "Auhentication failed" #: deluge/ui/gtk3/preferences.py:1449 msgid "An error occurred while removing account" -msgstr "" +msgstr "An error occurred while removing account" #: deluge/ui/gtk3/filtertreeview.py:122 #: deluge/ui/web/js/deluge-all/FilterPanel.js:28 @@ -2419,7 +2439,7 @@ msgstr "No Label" #: deluge/ui/gtk3/filtertreeview.py:206 msgid "No Owner" -msgstr "" +msgstr "No Owner" #: deluge/ui/gtk3/new_release_dialog.py:60 msgid "<i>Client Version</i>" @@ -2435,16 +2455,16 @@ msgstr " Torrent Queued" #: deluge/ui/gtk3/torrentview.py:421 msgid "Torrent is shared between other Deluge users or not." -msgstr "" +msgstr "Torrent is shared between other Deluge users or not." #: deluge/ui/gtk3/removetorrentdialog.py:67 msgid "Remove the selected torrents?" -msgstr "" +msgstr "Remove the selected torrents?" #: deluge/ui/gtk3/removetorrentdialog.py:68 #, python-format msgid "Total of %s torrents selected" -msgstr "" +msgstr "Total of %s torrents selected" #: deluge/ui/gtk3/menubar.py:79 msgid "Set Unlimited" @@ -2464,27 +2484,27 @@ msgstr "Disable" #: deluge/ui/gtk3/menubar.py:104 msgid "Enable..." -msgstr "" +msgstr "Enable..." #: deluge/ui/gtk3/menubar.py:465 msgid "Peer Upload Slots" -msgstr "" +msgstr "Peer Upload Slots" #: deluge/ui/gtk3/menubar.py:466 msgid "Set the maximum upload slots" -msgstr "" +msgstr "Set the maximum upload slots" #: deluge/ui/gtk3/menubar.py:471 msgid "Stop Seed At Ratio" -msgstr "" +msgstr "Stop Seed At Ratio" #: deluge/ui/gtk3/menubar.py:606 msgid "Ownership Change Error" -msgstr "" +msgstr "Ownership Change Error" #: deluge/ui/gtk3/menubar.py:607 msgid "There was an error while trying changing ownership." -msgstr "" +msgstr "There was an error while trying changing ownership." #: deluge/ui/gtk3/peers_tab.py:91 #: deluge/ui/web/js/deluge-all/details/PeersTab.js:66 @@ -2498,13 +2518,15 @@ msgstr "Client" #: deluge/ui/gtk3/__init__.py:29 msgid "GTK Options" -msgstr "" +msgstr "GTK Options" #: deluge/ui/gtk3/__init__.py:36 msgid "" "Add one or more torrent files, torrent URLs or magnet URIs to a currently " "running Deluge GTK instance" msgstr "" +"Add one or more torrent files, torrent URLs or magnet URIs to a currently " +"running Deluge GTK instance" #: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1 msgid "Creating Torrent" @@ -2516,7 +2538,7 @@ msgstr "Queued Torrents" #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4 msgid "Add Queued Torrents" -msgstr "" +msgstr "Add Queued Torrents" #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5 #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7 @@ -2528,7 +2550,7 @@ msgstr "_Remove" #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6 msgid "_Clear" -msgstr "" +msgstr "_Clear" #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7 msgid "Automatically add torrents on connect" @@ -2567,7 +2589,7 @@ msgstr "_Edit" #: deluge/ui/gtk3/glade/main_window.ui.h:7 msgid "_Preferences" -msgstr "" +msgstr "_Preferences" #: deluge/ui/gtk3/glade/main_window.ui.h:8 msgid "_Connection Manager" @@ -2603,7 +2625,7 @@ msgstr "_Columns" #: deluge/ui/gtk3/glade/main_window.ui.h:16 msgid "_Find ..." -msgstr "" +msgstr "_Find ..." #: deluge/ui/gtk3/glade/main_window.ui.h:17 msgid "S_idebar" @@ -2619,7 +2641,7 @@ msgstr "Show _Trackers" #: deluge/ui/gtk3/glade/main_window.ui.h:20 msgid "Show _Owners" -msgstr "" +msgstr "Show _Owners" #: deluge/ui/gtk3/glade/main_window.ui.h:21 msgid "_Help" @@ -2643,7 +2665,7 @@ msgstr "_Community" #: deluge/ui/gtk3/glade/main_window.ui.h:26 msgid "_About" -msgstr "" +msgstr "_About" #: deluge/ui/gtk3/glade/main_window.ui.h:27 msgid "Add torrent" @@ -2672,10 +2694,12 @@ msgid "" "Filter torrents by name.\n" "This will filter torrents for the current selection on the sidebar." msgstr "" +"Filter torrents by name.\n" +"This will filter torrents for the current selection on the sidebar." #: deluge/ui/gtk3/glade/main_window.ui.h:33 msgid "Filter" -msgstr "" +msgstr "Filter" #: deluge/ui/gtk3/glade/main_window.ui.h:34 msgid "Pause the selected torrents" @@ -2736,19 +2760,19 @@ msgstr "Connection Manager" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211 #: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86 msgid "Close" -msgstr "" +msgstr "Close" #: deluge/ui/gtk3/glade/main_window.ui.h:45 msgid "Filter:" -msgstr "" +msgstr "Filter:" #: deluge/ui/gtk3/glade/main_window.ui.h:46 msgid "Clear the search" -msgstr "" +msgstr "Clear the search" #: deluge/ui/gtk3/glade/main_window.ui.h:47 msgid "_Match Case" -msgstr "" +msgstr "_Match Case" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1 #: deluge/ui/console/modes/preferences/preference_panes.py:383 @@ -2776,7 +2800,7 @@ msgstr "Handshake" #: deluge/ui/console/modes/preferences/preference_panes.py:400 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88 msgid "Full Stream" -msgstr "" +msgstr "Full Stream" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6 #: deluge/ui/console/modes/preferences/preference_panes.py:400 @@ -2787,17 +2811,17 @@ msgstr "Either" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34 msgid "Socks4" -msgstr "" +msgstr "Socks4" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35 msgid "Socks5" -msgstr "" +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 Auth" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37 @@ -2807,28 +2831,28 @@ 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 Auth" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39 msgid "I2P" -msgstr "" +msgstr "I2P" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19 msgid "The standalone self-contained application" -msgstr "" +msgstr "The standalone self-contained application" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20 msgid "Thin Client" -msgstr "" +msgstr "Thin Client" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21 msgid "Connect to a Deluge daemon (deluged)" -msgstr "" +msgstr "Connect to a Deluge daemon (deluged)" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22 msgid "Application Mode" -msgstr "" +msgstr "Application Mode" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23 #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46 @@ -2845,45 +2869,48 @@ msgid "" "will increase bandwidth use between client\n" "and daemon (does not apply in Standalone mode)." msgstr "" +"The pieces bar\n" +"will increase bandwidth use between client\n" +"and daemon (does not apply in Standalone mode)." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28 msgid "Show a pieces bar in Status tab" -msgstr "" +msgstr "Show a pieces bar in Status tab" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25 #: deluge/ui/web/render/tab_status.html:27 msgid "Completed:" -msgstr "" +msgstr "Completed:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72 msgid "Downloading:" -msgstr "" +msgstr "Downloading:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31 msgid "Waiting:" -msgstr "" +msgstr "Waiting:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32 msgid "Missing:" -msgstr "" +msgstr "Missing:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33 msgid "_Revert" -msgstr "" +msgstr "_Revert" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34 msgid "Revert color to default" -msgstr "" +msgstr "Revert colour to default" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35 msgid "Piece Colors" -msgstr "" +msgstr "Piece Colours" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36 msgid "Main Window" -msgstr "" +msgstr "Main Window" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37 msgid "Enable system tray icon" @@ -2891,11 +2918,11 @@ msgstr "Enable system tray icon" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38 msgid "App Indicator" -msgstr "" +msgstr "App Indicator" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39 msgid "Systray" -msgstr "" +msgstr "Systray" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40 msgid "Minimize to tray on close" @@ -2911,25 +2938,25 @@ msgstr "Password protect system tray" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44 msgid "System Tray" -msgstr "" +msgstr "System Tray" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45 msgid "Notify about new releases" -msgstr "" +msgstr "Notify about new releases" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46 #: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38 msgid "Updates" -msgstr "" +msgstr "Updates" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47 #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235 msgid "System Default" -msgstr "" +msgstr "System Default" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48 msgid "<b>Language</b>" -msgstr "" +msgstr "<b>Language</b>" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49 #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16 @@ -2962,7 +2989,7 @@ msgstr "Download to:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54 msgid "Download Folders" -msgstr "" +msgstr "Download Folders" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93 @@ -2977,7 +3004,7 @@ msgstr "Prioritise first and last pieces of files in torrent" #: deluge/ui/console/modes/preferences/preference_panes.py:287 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102 msgid "Sequential download" -msgstr "" +msgstr "Sequential download" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58 #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15 @@ -2989,6 +3016,12 @@ msgid "" "distribution negatively in the swarm. It should be\n" "used sparingly." msgstr "" +"When enabled, the piece picker will pick pieces in\n" +"sequence instead of rarest first.\n" +"\n" +"Enabling sequential download will affect the piece\n" +"distribution negatively in the swarm. It should be\n" +"used sparingly." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111 @@ -2998,15 +3031,15 @@ msgstr "Add torrents in Paused state" #: 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 "Pre-allocate disk space" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66 msgid "Pre-allocate the disk space for the torrent files" -msgstr "" +msgstr "Pre-allocate the disk space for the torrent files" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67 msgid "Add Torrent Options" -msgstr "" +msgstr "Add Torrent Options" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68 msgid "Always show" @@ -3018,15 +3051,15 @@ msgstr "Bring the dialogue to focus" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70 msgid "Add Torrents Dialog" -msgstr "" +msgstr "Add Torrents Dialogue" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71 msgid "Connection Attempts per Second:" -msgstr "" +msgstr "Connection Attempts per Second:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72 msgid "Half-Open Connections:" -msgstr "" +msgstr "Half-Open Connections:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73 msgid "The maximum number of connections allowed. Set -1 for unlimited." @@ -3092,7 +3125,7 @@ msgstr "" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85 msgid "Global Bandwidth Limits" -msgstr "" +msgstr "Global Bandwidth Limits" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86 msgid "The maximum upload slots per torrent. Set -1 for unlimited." @@ -3106,6 +3139,7 @@ msgstr "" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88 msgid "The maximum number download speed per torrent. Set -1 for unlimited." msgstr "" +"The maximum number download speed per torrent. Set -1 for unlimited." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89 msgid "The maximum upload speed per torrent. Set -1 for unlimited." @@ -3113,55 +3147,57 @@ msgstr "The maximum upload speed per torrent. Set -1 for unlimited." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90 msgid "Per-Torrent Bandwidth Limits" -msgstr "" +msgstr "Per-Torrent Bandwidth Limits" #: 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 "Queue to top" #: 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 "New Torrents" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85 msgid "Seeding:" -msgstr "" +msgstr "Seeding:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59 msgid "Total:" -msgstr "" +msgstr "Total:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102 msgid "Ignore slow torrents" -msgstr "" +msgstr "Ignore slow torrents" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96 msgid "" "Torrents not transfering any data do not count towards download/seeding " "active count." msgstr "" +"Torrents not transferring any data do not count towards download/seeding " +"active count." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111 msgid "Prefer seeding torrents" -msgstr "" +msgstr "Prefer seeding torrents" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98 msgid "Give preference to seeding torrents over downloading torrents." -msgstr "" +msgstr "Give preference to seeding torrents over downloading torrents." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99 #: deluge/ui/console/modes/preferences/preference_panes.py:558 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50 msgid "Active Torrents" -msgstr "" +msgstr "Active Torrents" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7 @@ -3169,44 +3205,46 @@ msgstr "" #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187 #: deluge/ui/web/render/tab_status.html:4 msgid "Share Ratio:" -msgstr "" +msgstr "Share Ratio:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142 msgid "Time Ratio:" -msgstr "" +msgstr "Time Ratio:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157 msgid "Time (m):" -msgstr "" +msgstr "Time (m):" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103 #: deluge/ui/console/modes/preferences/preference_panes.py:590 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118 msgid "Seeding Rotation" -msgstr "" +msgstr "Seeding Rotation" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104 msgid "Pause Torrent" -msgstr "" +msgstr "Pause Torrent" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106 #: 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 "Share Ratio Reached" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107 msgid "" "The IP address of the interface to listen for incoming bittorrent " "connections on. Leave this empty if you want to use the default." msgstr "" +"The IP address of the interface to listen for incoming BitTorrent " +"connections. Leave this empty if you want to use the default." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38 msgid "Incoming Address" -msgstr "" +msgstr "Incoming Address" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109 msgid "Random" @@ -3214,7 +3252,7 @@ msgstr "Random" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110 msgid "Uses random ports in range 49152 to 65525" -msgstr "" +msgstr "Uses random ports in range 49152 to 65525" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111 msgid "Active Port:" @@ -3227,7 +3265,7 @@ msgstr "Test Active Port" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58 msgid "Incoming Port" -msgstr "" +msgstr "Incoming Port" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114 msgid "" @@ -3236,12 +3274,16 @@ msgid "" "connections. (Leave empty for default.)\n" " " msgstr "" +"\n" +"The network interface name or IP address for outgoing BitTorrent " +"connections. (Leave empty for default.)\n" +" " #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117 #: deluge/ui/console/modes/preferences/preference_panes.py:359 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101 msgid "Outgoing Interface" -msgstr "" +msgstr "Outgoing Interface" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118 #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11 @@ -3258,17 +3300,17 @@ msgstr "To:" #: deluge/ui/console/modes/preferences/preference_panes.py:328 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120 msgid "Outgoing Ports" -msgstr "" +msgstr "Outgoing Ports" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59 msgid "Outgoing:" -msgstr "" +msgstr "Outgoing:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38 msgid "Incoming:" -msgstr "" +msgstr "Incoming:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80 @@ -3306,7 +3348,7 @@ msgstr "Peer Exchange" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130 msgid "Exchanges peers between clients. (Disabling requires restart)" -msgstr "" +msgstr "Exchanges peers between clients. (Disabling requires restart)" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223 @@ -3336,7 +3378,7 @@ msgstr "Peer TOS Byte:" #: deluge/ui/console/modes/preferences/preference_panes.py:372 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181 msgid "Network Extras" -msgstr "" +msgstr "Network Extras" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137 #: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4 @@ -3360,51 +3402,54 @@ msgstr "Port:" #: deluge/ui/console/modes/preferences/preference_panes.py:658 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94 msgid "Proxy Hostnames" -msgstr "" +msgstr "Proxy Hostnames" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141 msgid "" "Hostnames should be attempted to be resolved through\n" "the proxy instead of using the local DNS service" msgstr "" +"Hostnames should be attempted to be resolved through\n" +"the proxy instead of using the local DNS service" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143 #: deluge/ui/console/modes/preferences/preference_panes.py:661 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103 msgid "Proxy Peers" -msgstr "" +msgstr "Proxy Peers" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144 msgid "Proxy peer and web seed connections." -msgstr "" +msgstr "Proxy peer and web seed connections." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145 #: deluge/ui/console/modes/preferences/preference_panes.py:665 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112 msgid "Proxy Trackers" -msgstr "" +msgstr "Proxy Trackers" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147 msgid "Force Proxy Use" -msgstr "" +msgstr "Force Proxy Use" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148 #: 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 "Hide Client Identity" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149 msgid "" "Attempt to hide client identity and only use proxy for incoming connections." msgstr "" +"Attempt to hide client identity and only use proxy for incoming connections." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150 #: deluge/ui/console/modes/preferences/preference_panes.py:668 #: deluge/ui/console/modes/preferences/preference_panes.py:669 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120 msgid "Force Proxy" -msgstr "" +msgstr "Force Proxy" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151 msgid "Cache Size (16 KiB blocks):" @@ -3472,7 +3517,7 @@ msgstr "Write Cache Hit Ratio:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161 #: deluge/ui/console/modes/preferences/preference_panes.py:709 msgid "Write" -msgstr "" +msgstr "Write" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162 msgid "" @@ -3515,7 +3560,7 @@ msgstr "Reads:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170 #: deluge/ui/console/modes/preferences/preference_panes.py:723 msgid "Read" -msgstr "" +msgstr "Read" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171 msgid "" @@ -3536,7 +3581,7 @@ msgstr "Read Cache Size:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175 #: deluge/ui/gtk3/glade/connection_manager.ui.h:7 msgid "_Refresh" -msgstr "" +msgstr "_Refresh" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177 msgid "" @@ -3555,7 +3600,7 @@ msgstr "Yes, please send anonymous statistics" #: deluge/ui/console/modes/preferences/preference_panes.py:503 #: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57 msgid "System Information" -msgstr "" +msgstr "System Information" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180 msgid "Location:" @@ -3573,15 +3618,15 @@ msgstr "" #: deluge/ui/console/modes/preferences/preference_panes.py:516 #: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85 msgid "GeoIP Database" -msgstr "" +msgstr "GeoIP Database" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183 msgid "Associate with Deluge" -msgstr "" +msgstr "Associate with Deluge" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184 msgid "Magnet Links" -msgstr "" +msgstr "Magnet Links" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185 #: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37 @@ -3614,11 +3659,11 @@ msgstr "Periodically check the website for new releases" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193 msgid "_Delete" -msgstr "" +msgstr "_Delete" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194 msgid "Accounts" -msgstr "" +msgstr "Accounts" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196 #: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29 @@ -3648,23 +3693,23 @@ msgstr "Info" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201 msgid "_Install" -msgstr "" +msgstr "_Install" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202 msgid "_Find More..." -msgstr "" +msgstr "_Find More..." #: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4 msgid "Remove the selected torrent(s)?" -msgstr "" +msgstr "Remove the selected torrent(s)?" #: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5 msgid "Include downloaded files" -msgstr "" +msgstr "Include downloaded files" #: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6 msgid "(This is permanent!)" -msgstr "" +msgstr "(This is permanent!)" #: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1 msgid "Add Peer" @@ -3676,11 +3721,11 @@ msgstr "hostname:port" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1 msgid "Properties" -msgstr "" +msgstr "Properties" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3 msgid "Max drop down rows" -msgstr "" +msgstr "Max drop down rows" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4 #: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2 @@ -3690,87 +3735,87 @@ msgstr "<b>General</b>" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5 msgid "Show path entry" -msgstr "" +msgstr "Show path entry" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6 msgid "Show file chooser" -msgstr "" +msgstr "Show file chooser" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7 msgid "Show folder name" -msgstr "" +msgstr "Show folder name" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8 msgid "Path Chooser Type" -msgstr "" +msgstr "Path Chooser Type" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9 msgid "Enable autocomplete" -msgstr "" +msgstr "Enable autocomplete" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10 msgid "Show hidden files" -msgstr "" +msgstr "Show hidden files" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11 msgid "Set new key" -msgstr "" +msgstr "Set new key" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12 msgid "Press this key to set new key accelerators to trigger auto-complete" -msgstr "" +msgstr "Press this key to set new key accelerators to trigger auto-complete" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13 msgid "Autocomplete" -msgstr "" +msgstr "Autocomplete" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14 msgid "Save path" -msgstr "" +msgstr "Save path" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15 msgid "Ctrl+S" -msgstr "" +msgstr "Ctrl+S" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16 msgid "Ctrl+E" -msgstr "" +msgstr "Ctrl+E" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17 msgid "Ctrl+R" -msgstr "" +msgstr "Ctrl+R" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18 msgid "Ctrl+H" -msgstr "" +msgstr "Ctrl+H" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19 msgid "Ctrl+D" -msgstr "" +msgstr "Ctrl+D" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22 msgid "Toggle hidden files" -msgstr "" +msgstr "Toggle hidden files" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23 msgid "Default path" -msgstr "" +msgstr "Default path" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24 msgid "Shortcuts" -msgstr "" +msgstr "Shortcuts" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25 msgid "Select a Directory" -msgstr "" +msgstr "Select a Directory" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26 msgid "Saved paths" -msgstr "" +msgstr "Saved paths" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27 msgid "column" -msgstr "" +msgstr "column" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29 #: deluge/ui/console/modes/preferences/preferences.py:145 @@ -3786,7 +3831,7 @@ msgstr "Cancel" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30 msgid "Open" -msgstr "" +msgstr "Open" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31 #: deluge/ui/web/js/deluge-all/Toolbar.js:39 @@ -3801,18 +3846,18 @@ msgstr "Add" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32 msgid "Add the current entry value to the list" -msgstr "" +msgstr "Add the current entry value to the list" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33 #: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98 #: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:102 msgid "Edit" -msgstr "" +msgstr "Edit" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34 msgid "Edit the selected entry" -msgstr "" +msgstr "Edit the selected entry" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35 #: deluge/ui/web/js/deluge-all/Toolbar.js:46 @@ -3824,27 +3869,27 @@ msgstr "Remove" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36 msgid "Remove the selected entry" -msgstr "" +msgstr "Remove the selected entry" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38 msgid "Move the selected entry up" -msgstr "" +msgstr "Move the selected entry up" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40 msgid "Move the selected entry down" -msgstr "" +msgstr "Move the selected entry down" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41 msgid "Default" -msgstr "" +msgstr "Default" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42 msgid "No default path set" -msgstr "" +msgstr "No default path set" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43 msgid "Open properties dialog" -msgstr "" +msgstr "Open properties dialogue" #: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1 msgid "Add Infohash" @@ -3852,7 +3897,7 @@ msgstr "Add Infohash" #: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4 msgid "From Infohash" -msgstr "" +msgstr "From Infohash" #: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5 msgid "Infohash:" @@ -3873,11 +3918,11 @@ msgstr "Add Host" #: deluge/ui/web/js/deluge-all/MoveStorage.js:16 #: deluge/ui/web/js/deluge-all/Menus.js:346 msgid "Move Download Folder" -msgstr "" +msgstr "Move Download Folder" #: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4 msgid "Move the torrent(s) download folder." -msgstr "" +msgstr "Move the torrent(s) download folder." #: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5 msgid "Destination:" @@ -3893,19 +3938,19 @@ msgstr "_Goto Website" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4 msgid "New Release Available!" -msgstr "" +msgstr "New Release Available!" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5 msgid "Available Version:" -msgstr "" +msgstr "Available Version:" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6 msgid "Server Version" -msgstr "" +msgstr "Server Version" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7 msgid "Current Version:" -msgstr "" +msgstr "Current Version:" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8 msgid "Do not show this dialog in the future" @@ -3915,73 +3960,73 @@ msgstr "Do not show this dialogue in the future" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26 #: deluge/ui/web/render/tab_status.html:9 msgid "Down Speed:" -msgstr "" +msgstr "Down Speed:" #: 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 "Up Speed:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3 #: deluge/ui/web/render/tab_status.html:2 msgid "Downloaded:" -msgstr "" +msgstr "Downloaded:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4 #: deluge/ui/web/render/tab_status.html:3 msgid "Uploaded:" -msgstr "" +msgstr "Uploaded:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5 #: deluge/ui/web/render/tab_status.html:16 msgid "Seeds:" -msgstr "" +msgstr "Seeds:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6 #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10 #: deluge/ui/web/render/tab_status.html:17 msgid "Peers:" -msgstr "" +msgstr "Peers:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8 #: deluge/ui/web/render/tab_status.html:18 msgid "Availability:" -msgstr "" +msgstr "Availability:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9 #: deluge/ui/web/render/tab_status.html:25 msgid "Seed Rank:" -msgstr "" +msgstr "Seed Rank:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10 msgid "ETA Time:" -msgstr "" +msgstr "ETA Time:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11 #: deluge/ui/web/render/tab_status.html:13 msgid "Last Transfer:" -msgstr "" +msgstr "Last Transfer:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12 #: deluge/ui/web/render/tab_status.html:23 msgid "Active Time:" -msgstr "" +msgstr "Active Time:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13 #: deluge/ui/web/render/tab_status.html:20 msgid "Complete Seen:" -msgstr "" +msgstr "Complete Seen:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14 #: deluge/ui/web/render/tab_status.html:24 msgid "Seeding Time:" -msgstr "" +msgstr "Seeding Time:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16 #: deluge/ui/web/render/tab_status.html:12 msgid "Pieces:" -msgstr "" +msgstr "Pieces:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17 #: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3 @@ -3992,31 +4037,31 @@ msgstr "Name:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25 msgid "Download Folder:" -msgstr "" +msgstr "Download Folder:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19 msgid "Added:" -msgstr "" +msgstr "Added:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26 msgid "Total Size:" -msgstr "" +msgstr "Total Size:" #: 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 "Total Files:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24 msgid "Hash:" -msgstr "" +msgstr "Hash:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31 msgid "Created By:" -msgstr "" +msgstr "Created By:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24 #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17 @@ -4025,7 +4070,7 @@ msgstr "Comments:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29 msgid "Owner:" -msgstr "" +msgstr "Owner:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34 msgid "Move completed:" @@ -4047,29 +4092,29 @@ msgstr "Remove at ratio" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44 msgid "Bandwidth Limits" -msgstr "" +msgstr "Bandwidth Limits" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46 msgid "Current Tracker:" -msgstr "" +msgstr "Current Tracker:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47 msgid "Total Trackers:" -msgstr "" +msgstr "Total Trackers:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48 #: deluge/ui/web/render/tab_status.html:6 msgid "Tracker Status:" -msgstr "" +msgstr "Tracker Status:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49 #: deluge/ui/web/render/tab_status.html:5 msgid "Next Announce:" -msgstr "" +msgstr "Next Announce:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50 msgid "Private Torrent:" -msgstr "" +msgstr "Private Torrent:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51 #: deluge/ui/gtk3/glade/torrent_menu.ui.h:8 @@ -4103,7 +4148,7 @@ msgstr "Info_hash" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11 msgid "Move Complete Folder" -msgstr "" +msgstr "Move Complete Folder" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12 msgid "Add In _Paused State" @@ -4118,32 +4163,32 @@ msgstr "Prioritise First/Last Pieces" #: 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 "Skip File Hash Check" #: 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 "Preallocate Disk Space" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24 msgid "Preallocate the disk space for the torrent files" -msgstr "" +msgstr "Preallocate the disk space for the torrent files" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25 msgid "Maximum torrent download speed" -msgstr "" +msgstr "Maximum torrent download speed" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27 msgid "Maximum torrent upload speed" -msgstr "" +msgstr "Maximum torrent upload speed" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29 msgid "Maximum torrent connections" -msgstr "" +msgstr "Maximum torrent connections" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31 msgid "Maximum torrent upload slots" -msgstr "" +msgstr "Maximum torrent upload slots" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34 msgid "Apply To All" @@ -4159,11 +4204,11 @@ msgstr "_Show Deluge" #: deluge/ui/gtk3/glade/tray_menu.ui.h:3 msgid "_Pause Session" -msgstr "" +msgstr "_Pause Session" #: deluge/ui/gtk3/glade/tray_menu.ui.h:4 msgid "_Resume Session" -msgstr "" +msgstr "_Resume Session" #: deluge/ui/gtk3/glade/tray_menu.ui.h:5 #: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1 @@ -4189,12 +4234,12 @@ msgstr "Edit Trackers" #: deluge/ui/gtk3/glade/edit_trackers.ui.h:4 #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19 msgid "_Up" -msgstr "" +msgstr "_Up" #: deluge/ui/gtk3/glade/edit_trackers.ui.h:8 #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22 msgid "_Down" -msgstr "" +msgstr "_Down" #: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1 msgid "_Add Peer" @@ -4221,7 +4266,7 @@ msgstr "Enter Remote Path" #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4 msgid "Remote Path" -msgstr "" +msgstr "Remote Path" #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5 #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5 @@ -4231,43 +4276,43 @@ msgstr "Path:" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1 msgid "32 KiB" -msgstr "" +msgstr "32 KiB" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2 msgid "64 KiB" -msgstr "" +msgstr "64 KiB" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3 msgid "128 KiB" -msgstr "" +msgstr "128 KiB" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4 msgid "256 KiB" -msgstr "" +msgstr "256 KiB" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5 msgid "512 KiB" -msgstr "" +msgstr "512 KiB" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6 msgid "1 MiB" -msgstr "" +msgstr "1 MiB" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7 msgid "2 MiB" -msgstr "" +msgstr "2 MiB" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8 msgid "4 MiB" -msgstr "" +msgstr "4 MiB" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9 msgid "8 MiB" -msgstr "" +msgstr "8 MiB" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10 msgid "16 MiB" -msgstr "" +msgstr "16 MiB" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11 msgid "Create Torrent" @@ -4320,7 +4365,7 @@ msgstr "Save .torrent as" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:1 msgid "_Open Download Folder" -msgstr "" +msgstr "_Open Download Folder" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:2 msgid "_Pause" @@ -4357,7 +4402,7 @@ msgstr "_Force Re-check" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:11 msgid "_Move Download Folder" -msgstr "" +msgstr "_Move Download Folder" #: deluge/ui/gtk3/glade/other_dialog.ui.h:3 msgid "label" @@ -4385,7 +4430,7 @@ msgstr "Upload _Slot Limit" #: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5 msgid "Stop seed at _ratio" -msgstr "" +msgstr "Stop seed at _ratio" #: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6 msgid "_Auto Managed" @@ -4393,11 +4438,11 @@ msgstr "_Auto Managed" #: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7 msgid "_Super Seeding" -msgstr "" +msgstr "_Super Seeding" #: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8 msgid "_Change Ownership" -msgstr "" +msgstr "_Change Ownership" #: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1 #: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26 @@ -4406,7 +4451,7 @@ msgstr "Add Tracker" #: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4 msgid "Add Trackers" -msgstr "" +msgstr "Add Trackers" #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1 msgid "Add URL" @@ -4414,7 +4459,7 @@ msgstr "Add URL" #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4 msgid "From URL" -msgstr "" +msgstr "From URL" #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5 #: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1 @@ -4423,31 +4468,31 @@ msgstr "URL:" #: deluge/ui/gtk3/glade/connection_manager.ui.h:9 msgid "Deluge Daemons" -msgstr "" +msgstr "Deluge Daemons" #: deluge/ui/gtk3/glade/connection_manager.ui.h:10 msgid "Auto-connect to selected Daemon" -msgstr "" +msgstr "Auto-connect to selected Daemon" #: deluge/ui/gtk3/glade/connection_manager.ui.h:11 msgid "Auto-start localhost daemon (if required)" -msgstr "" +msgstr "Auto-start localhost daemon (if required)" #: deluge/ui/gtk3/glade/connection_manager.ui.h:12 msgid "Hide this dialog" -msgstr "" +msgstr "Hide this dialogue" #: deluge/ui/gtk3/glade/connection_manager.ui.h:13 msgid "Startup Options" -msgstr "" +msgstr "Startup Options" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1 msgid "_Open File" -msgstr "" +msgstr "_Open File" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2 msgid "_Show Folder" -msgstr "" +msgstr "_Show Folder" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3 msgid "_Expand All" @@ -4455,30 +4500,31 @@ msgstr "_Expand All" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4 msgid "_Skip" -msgstr "" +msgstr "_Skip" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5 msgid "_Low" -msgstr "" +msgstr "_Low" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6 msgid "_Normal" -msgstr "" +msgstr "_Normal" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7 msgid "_High" -msgstr "" +msgstr "_High" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" -msgstr "" +msgstr "Deluge Team" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" +"Deluge is a lightweight, Free Software, cross-platform BitTorrent client." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4486,14 +4532,23 @@ msgid "" "Deluge heavily utilises the libtorrent library it has a comprehensive list " "of the features provided." msgstr "" +"Deluge contains the common features to BitTorrent clients such as Protocol " +"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" +"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As " +"Deluge heavily utilises the libtorrent library it has a comprehensive list " +"of the features provided." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " "handles all the BitTorrent activity and is able to run on headless machines " "with the user-interfaces connecting remotely from any other platform." msgstr "" +"Deluge has been designed to run as both a normal standalone desktop " +"application and as a client-server. In Thinclient mode a Deluge daemon " +"handles all the BitTorrent activity and is able to run on headless machines " +"with the user-interfaces connecting remotely from any other platform." #: deluge/ui/data/share/applications/deluge.desktop.in.h:2 msgid "BitTorrent Client" @@ -4509,41 +4564,43 @@ msgstr "Download and share files over BitTorrent" #: deluge/ui/console/console.py:76 msgid "Console Options" -msgstr "" +msgstr "Console Options" #: deluge/ui/console/console.py:78 msgid "" "These daemon connect options will be used for commands, or if console ui " "autoconnect is enabled." msgstr "" +"These daemon connect options will be used for commands, or if console UI " +"auto-connect is enabled." #: deluge/ui/console/console.py:87 msgid "Deluge daemon IP address to connect to (default 127.0.0.1)" -msgstr "" +msgstr "Deluge daemon IP address to connect to (default 127.0.0.1)" #: deluge/ui/console/console.py:96 msgid "Deluge daemon port to connect to (default 58846)" -msgstr "" +msgstr "Deluge daemon port to connect to (default 58846)" #: deluge/ui/console/console.py:104 msgid "Deluge daemon username to use when connecting" -msgstr "" +msgstr "Deluge daemon username to use when connecting" #: deluge/ui/console/console.py:111 msgid "Deluge daemon password to use when connecting" -msgstr "" +msgstr "Deluge daemon password to use when connecting" #: deluge/ui/console/console.py:131 msgid "Console Commands" -msgstr "" +msgstr "Console Commands" #: deluge/ui/console/console.py:132 msgid "Description" -msgstr "" +msgstr "Description" #: deluge/ui/console/console.py:133 msgid "The following console commands are available:" -msgstr "" +msgstr "The following console commands are available:" #: deluge/ui/console/console.py:134 #: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2 @@ -4553,115 +4610,117 @@ msgstr "Command" #: deluge/ui/console/cmdline/command.py:208 #, python-format msgid "`%s` alias" -msgstr "" +msgstr "`%s` alias" #: deluge/ui/console/cmdline/commands/manage.py:29 msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]" -msgstr "" +msgstr "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]" #: deluge/ui/console/cmdline/commands/manage.py:35 msgid "an expression matched against torrent ids and torrent names" -msgstr "" +msgstr "an expression matched against torrent ids and torrent names" #: deluge/ui/console/cmdline/commands/manage.py:43 #: deluge/ui/console/cmdline/commands/config.py:88 msgid "set value for this key" -msgstr "" +msgstr "set value for this key" #: deluge/ui/console/cmdline/commands/manage.py:46 #: deluge/ui/console/cmdline/commands/config.py:91 msgid "Value to set" -msgstr "" +msgstr "Value to set" #: 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 "one or more keys separated by space" #: deluge/ui/console/cmdline/commands/rm.py:33 msgid "Also removes the torrent data" -msgstr "" +msgstr "Also removes the torrent data" #: deluge/ui/console/cmdline/commands/rm.py:40 msgid "List the matching torrents without removing." -msgstr "" +msgstr "List the matching torrents without removing." #: deluge/ui/console/cmdline/commands/rm.py:46 #: deluge/ui/console/cmdline/commands/recheck.py:28 #: deluge/ui/console/cmdline/commands/move.py:31 msgid "One or more torrent ids" -msgstr "" +msgstr "One or more torrent IDs" #: deluge/ui/console/cmdline/commands/rm.py:66 #, python-format msgid "Confirm with -c to remove the listed torrents (Count: %d)" -msgstr "" +msgstr "Confirm with -c to remove the listed torrents (Count: %d)" #: deluge/ui/console/cmdline/commands/resume.py:22 msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]" -msgstr "" +msgstr "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]" #: deluge/ui/console/cmdline/commands/resume.py:29 msgid "One or more torrent ids. Use \"*\" to resume all torrents" -msgstr "" +msgstr "One or more torrent IDs. Use \"*\" to resume all torrents" #: deluge/ui/console/cmdline/commands/pause.py:29 msgid "One or more torrent ids. Use \"*\" to pause all torrents" -msgstr "" +msgstr "One or more torrent IDs. Use \"*\" to pause all torrents" #: deluge/ui/console/cmdline/commands/add.py:38 msgid "Download folder for torrent" -msgstr "" +msgstr "Download folder for torrent" #: deluge/ui/console/cmdline/commands/add.py:44 msgid "Move the completed torrent to this folder" -msgstr "" +msgstr "Move the completed torrent to this folder" #: deluge/ui/console/cmdline/commands/add.py:50 msgid "One or more torrent files, URLs or magnet URIs" -msgstr "" +msgstr "One or more torrent files, URLs or magnet URIs" #: deluge/ui/console/cmdline/commands/plugin.py:29 msgid "Lists available plugins" -msgstr "" +msgstr "Lists available plugins" #: deluge/ui/console/cmdline/commands/plugin.py:37 msgid "Shows enabled plugins" -msgstr "" +msgstr "Shows enabled plugins" #: deluge/ui/console/cmdline/commands/plugin.py:40 msgid "Enables a plugin" -msgstr "" +msgstr "Enables a plugin" #: deluge/ui/console/cmdline/commands/plugin.py:43 msgid "Disables a plugin" -msgstr "" +msgstr "Disables a plugin" #: deluge/ui/console/cmdline/commands/plugin.py:51 msgid "Reload list of available plugins" -msgstr "" +msgstr "Reload list of available plugins" #: deluge/ui/console/cmdline/commands/plugin.py:54 msgid "Install a plugin from an .egg file" -msgstr "" +msgstr "Install a plugin from an .egg file" #: deluge/ui/console/cmdline/commands/status.py:36 msgid "" "Raw values for upload/download rates (without KiB/s suffix)(useful for " "scripts that want to do their own parsing)" msgstr "" +"Raw values for upload/download rates (without KiB/s suffix)(useful for " +"scripts that want to do their own parsing)" #: deluge/ui/console/cmdline/commands/status.py:46 msgid "Do not show torrent status (Improves command speed)" -msgstr "" +msgstr "Do not show torrent status (Improves command speed)" #: deluge/ui/console/cmdline/commands/connect.py:26 msgid "Usage: connect <host[:port]> [<username>] [<password>]" -msgstr "" +msgstr "Usage: connect <host[:port]> [<username>] [<password>]" #: deluge/ui/console/cmdline/commands/connect.py:30 msgid "Daemon host and port" -msgstr "" +msgstr "Daemon host and port" #: deluge/ui/console/cmdline/commands/connect.py:36 #: deluge/ui/console/modes/preferences/preference_panes.py:652 @@ -4671,139 +4730,139 @@ msgstr "Password" #: deluge/ui/console/cmdline/commands/move.py:34 msgid "The path to move the torrents to" -msgstr "" +msgstr "The path to move the torrents to" #: deluge/ui/console/cmdline/commands/debug.py:26 msgid "The new state" -msgstr "" +msgstr "The new state" #: deluge/ui/console/cmdline/commands/help.py:29 msgid "One or more commands" -msgstr "" +msgstr "One or more commands" #: deluge/ui/console/cmdline/commands/config.py:79 msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]" -msgstr "" +msgstr "Usage: config [--set <key> <value>] [<key> [<key>...] ]" #: deluge/ui/console/cmdline/commands/info.py:101 msgid "Show more information per torrent." -msgstr "" +msgstr "Show more information per torrent." #: deluge/ui/console/cmdline/commands/info.py:109 msgid "Show more detailed information including files and peers." -msgstr "" +msgstr "Show more detailed information including files and peers." #: deluge/ui/console/cmdline/commands/info.py:116 #, python-format msgid "Show torrents with state STATE: %s." -msgstr "" +msgstr "Show torrents with state STATE: %s." #: deluge/ui/console/cmdline/commands/info.py:132 msgid "Same as --sort but items are in reverse order." -msgstr "" +msgstr "Same as --sort but items are in reverse order." #: deluge/ui/console/cmdline/commands/info.py:138 msgid "One or more torrent ids. If none is given, list all" -msgstr "" +msgstr "One or more Torrent IDs. If none is given, list all" #: deluge/ui/console/modes/connectionmanager.py:44 msgid "Select Host" -msgstr "" +msgstr "Select Host" #: deluge/ui/console/modes/connectionmanager.py:51 msgid "Quit" -msgstr "" +msgstr "Quit" #: deluge/ui/console/modes/connectionmanager.py:51 msgid "Delete Host" -msgstr "" +msgstr "Delete Host" #: deluge/ui/console/modes/connectionmanager.py:116 msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)" -msgstr "" +msgstr "Add Host (Up & Down arrows to navigate, Esc to cancel)" #: deluge/ui/console/modes/connectionmanager.py:133 msgid "Error adding host" -msgstr "" +msgstr "Error adding host" #: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96 msgid "Columns" -msgstr "" +msgstr "Columns" #: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96 msgid "Width" -msgstr "" +msgstr "Width" #: deluge/ui/console/modes/preferences/preference_panes.py:178 msgid "General options" -msgstr "" +msgstr "General options" #: deluge/ui/console/modes/preferences/preference_panes.py:182 msgid "Ring system bell when a download finishes" -msgstr "" +msgstr "Ring system bell when a download finishes" #: deluge/ui/console/modes/preferences/preference_panes.py:188 msgid "List complete torrents after incomplete regardless of sorting order" -msgstr "" +msgstr "List complete torrents after incomplete regardless of sorting order" #: deluge/ui/console/modes/preferences/preference_panes.py:193 msgid "Move selection when moving torrents in the queue" -msgstr "" +msgstr "Move selection when moving torrents in the queue" #: deluge/ui/console/modes/preferences/preference_panes.py:200 #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67 msgid "Language" -msgstr "" +msgstr "Language" #: deluge/ui/console/modes/preferences/preference_panes.py:202 msgid "Command Line Mode" -msgstr "" +msgstr "Command Line Mode" #: deluge/ui/console/modes/preferences/preference_panes.py:205 msgid "Do not store duplicate input in history" -msgstr "" +msgstr "Do not store duplicate input in history" #: deluge/ui/console/modes/preferences/preference_panes.py:210 msgid "Store and load command line history in command line mode" -msgstr "" +msgstr "Store and load command line history in command line mode" #: deluge/ui/console/modes/preferences/preference_panes.py:216 msgid "Third tab lists all remaining torrents in command line mode" -msgstr "" +msgstr "Third tab lists all remaining Torrents in command line mode" #: deluge/ui/console/modes/preferences/preference_panes.py:221 msgid "Torrents per tab press" -msgstr "" +msgstr "Torrents per tab press" #: deluge/ui/console/modes/preferences/preference_panes.py:234 #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39 msgid "Folders" -msgstr "" +msgstr "Folders" #: deluge/ui/console/modes/preferences/preference_panes.py:237 msgid "Download To" -msgstr "" +msgstr "Download To" #: deluge/ui/console/modes/preferences/preference_panes.py:254 msgid "Move completed to" -msgstr "" +msgstr "Move completed to" #: deluge/ui/console/modes/preferences/preference_panes.py:269 msgid "Copy of .torrent files to" -msgstr "" +msgstr "Copy of .torrent files to" #: deluge/ui/console/modes/preferences/preference_panes.py:290 msgid "Add Paused" -msgstr "" +msgstr "Add Paused" #: deluge/ui/console/modes/preferences/preference_panes.py:293 msgid "Pre-Allocate disk space" -msgstr "" +msgstr "Pre-Allocate disk space" #: deluge/ui/console/modes/preferences/preference_panes.py:304 msgid "Incomming Ports" -msgstr "" +msgstr "Incomming Ports" #: deluge/ui/console/modes/preferences/preference_panes.py:313 #: deluge/ui/console/modes/preferences/preference_panes.py:337 @@ -4822,17 +4881,19 @@ msgstr "Use Random Ports" #: deluge/ui/console/modes/preferences/preference_panes.py:352 msgid "Incoming Interface" -msgstr "" +msgstr "Incoming Interface" #: deluge/ui/console/modes/preferences/preference_panes.py:355 msgid "IP address of the interface to listen on (leave empty for default):" -msgstr "" +msgstr "IP address of the interface to listen on (leave empty for default):" #: deluge/ui/console/modes/preferences/preference_panes.py:363 msgid "" "The network interface name or IP address for outgoing BitTorrent " "connections. (Leave empty for default.):" msgstr "" +"The network interface name or IP address for outgoing BitTorrent " +"connections. (Leave empty for default.):" #: deluge/ui/console/modes/preferences/preference_panes.py:382 msgid "Inbound" @@ -4845,7 +4906,7 @@ msgstr "Outbound" #: 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 "Global Bandwidth Usage" #: deluge/ui/console/modes/preferences/preference_panes.py:416 #: deluge/ui/console/modes/preferences/preference_panes.py:469 @@ -4861,12 +4922,12 @@ msgstr "Maximum Upload Slots" #: deluge/ui/console/modes/preferences/preference_panes.py:430 #: deluge/ui/console/modes/preferences/preference_panes.py:483 msgid "Maximum Download Speed (KiB/s)" -msgstr "" +msgstr "Maximum Download Speed (KiB/s)" #: deluge/ui/console/modes/preferences/preference_panes.py:437 #: deluge/ui/console/modes/preferences/preference_panes.py:490 msgid "Maximum Upload Speed (KiB/s)" -msgstr "" +msgstr "Maximum Upload Speed (KiB/s)" #: deluge/ui/console/modes/preferences/preference_panes.py:444 msgid "Maximum Half-Open Connections" @@ -4883,19 +4944,19 @@ msgstr "Rate Limit IP Overhead" #: 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 "Per Torrent Bandwidth Usage" #: deluge/ui/console/modes/preferences/preference_panes.py:513 msgid "Yes, please send anonymous statistics." -msgstr "" +msgstr "Yes, please send anonymous statistics." #: deluge/ui/console/modes/preferences/preference_panes.py:531 msgid "Daemon Port" -msgstr "" +msgstr "Daemon Port" #: deluge/ui/console/modes/preferences/preference_panes.py:538 msgid "Allow remote connections" -msgstr "" +msgstr "Allow remote connections" #: deluge/ui/console/modes/preferences/preference_panes.py:561 msgid "Total" @@ -4907,19 +4968,19 @@ msgstr "Share Ratio" #: deluge/ui/console/modes/preferences/preference_panes.py:601 msgid "Time Ratio" -msgstr "" +msgstr "Time Ratio" #: deluge/ui/console/modes/preferences/preference_panes.py:609 msgid "Time (m)" -msgstr "" +msgstr "Time (m)" #: deluge/ui/console/modes/preferences/preference_panes.py:633 msgid "Remove torrent (Unchecked pauses torrent)" -msgstr "" +msgstr "Remove torrent (Unchecked pauses torrent)" #: deluge/ui/console/modes/preferences/preference_panes.py:646 msgid "Proxy Settings" -msgstr "" +msgstr "Proxy Settings" #: deluge/ui/console/modes/preferences/preference_panes.py:649 msgid "Type" @@ -4927,39 +4988,39 @@ msgstr "Type" #: deluge/ui/console/modes/preferences/preference_panes.py:653 msgid "Hostname" -msgstr "" +msgstr "Hostname" #: deluge/ui/console/modes/preferences/preference_panes.py:673 msgid "Proxy Type Help" -msgstr "" +msgstr "Proxy Type Help" #: deluge/ui/console/modes/preferences/preference_panes.py:697 msgid "Cache Size (16 KiB blocks)" -msgstr "" +msgstr "Cache Size (16 KiB blocks)" #: deluge/ui/console/modes/preferences/preference_panes.py:704 msgid "Cache Expiry (seconds)" -msgstr "" +msgstr "Cache Expiry (seconds)" #: deluge/ui/console/modes/preferences/preference_panes.py:712 msgid "Blocks Written" -msgstr "" +msgstr "Blocks Written" #: deluge/ui/console/modes/preferences/preference_panes.py:716 msgid "Writes" -msgstr "" +msgstr "Writes" #: deluge/ui/console/modes/preferences/preference_panes.py:720 msgid "Write Cache Hit Ratio" -msgstr "" +msgstr "Write Cache Hit Ratio" #: deluge/ui/console/modes/preferences/preference_panes.py:725 msgid "Blocks Read" -msgstr "" +msgstr "Blocks Read" #: deluge/ui/console/modes/preferences/preference_panes.py:729 msgid "Blocks Read hit" -msgstr "" +msgstr "Blocks Read hit" #: deluge/ui/console/modes/preferences/preference_panes.py:732 msgid "Reads" diff --git a/deluge/i18n/eo.po b/deluge/i18n/eo.po index c04394b4f..ac3a7b387 100644 --- a/deluge/i18n/eo.po +++ b/deluge/i18n/eo.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/es.po b/deluge/i18n/es.po index 8e26e3e68..194249d25 100644 --- a/deluge/i18n/es.po +++ b/deluge/i18n/es.po @@ -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" @@ -4477,16 +4477,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4495,7 +4495,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/et.po b/deluge/i18n/et.po index 180e6dbf0..556f6996f 100644 --- a/deluge/i18n/et.po +++ b/deluge/i18n/et.po @@ -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" @@ -4442,16 +4442,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4460,7 +4460,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/eu.po b/deluge/i18n/eu.po index 5e9711b2b..d18d61d87 100644 --- a/deluge/i18n/eu.po +++ b/deluge/i18n/eu.po @@ -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" @@ -4463,16 +4463,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4481,7 +4481,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/fa.po b/deluge/i18n/fa.po index b821d2a3f..374a69a5a 100644 --- a/deluge/i18n/fa.po +++ b/deluge/i18n/fa.po @@ -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" @@ -4426,16 +4426,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4444,7 +4444,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/fi.po b/deluge/i18n/fi.po index 9196ca941..c5a722e89 100644 --- a/deluge/i18n/fi.po +++ b/deluge/i18n/fi.po @@ -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" @@ -4446,16 +4446,16 @@ msgstr "_Normaali" msgid "_High" msgstr "_Korkea" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "Deluge-tiimi" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4464,7 +4464,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge 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" diff --git a/deluge/i18n/fo.po b/deluge/i18n/fo.po index 86205febd..33fff5bf9 100644 --- a/deluge/i18n/fo.po +++ b/deluge/i18n/fo.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/fr.po b/deluge/i18n/fr.po index 49619fe3d..06e17a78b 100644 --- a/deluge/i18n/fr.po +++ b/deluge/i18n/fr.po @@ -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" @@ -4519,16 +4519,16 @@ msgstr "_Normal" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "L'équipe de Deluge" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "Deluge est un client BitTorrent multiplate-forme léger et libre." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4537,7 +4537,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " @@ -6307,5 +6307,5 @@ msgstr "Temps restant estimé :" msgid "Date Added:" msgstr "" -#~ msgid "<b>Languge</b>" +#~ msgid "<b>Language</b>" #~ msgstr "<b>Langue</b>" diff --git a/deluge/i18n/fy.po b/deluge/i18n/fy.po index d4703ce83..aa217c641 100644 --- a/deluge/i18n/fy.po +++ b/deluge/i18n/fy.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/ga.po b/deluge/i18n/ga.po index e66a80735..6d4ae4351 100644 --- a/deluge/i18n/ga.po +++ b/deluge/i18n/ga.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/gl.po b/deluge/i18n/gl.po index 30d58442f..15e6b372a 100644 --- a/deluge/i18n/gl.po +++ b/deluge/i18n/gl.po @@ -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 @@ -4481,16 +4481,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4499,7 +4499,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/he.po b/deluge/i18n/he.po index e91035460..7900c3d4a 100644 --- a/deluge/i18n/he.po +++ b/deluge/i18n/he.po @@ -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" @@ -4426,16 +4426,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4444,7 +4444,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/hi.po b/deluge/i18n/hi.po index b1400315c..f3dae8a5a 100644 --- a/deluge/i18n/hi.po +++ b/deluge/i18n/hi.po @@ -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 "" @@ -4429,16 +4429,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4447,7 +4447,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " @@ -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" diff --git a/deluge/i18n/hr.po b/deluge/i18n/hr.po index 92bf1fb5e..0b4b9a89d 100644 --- a/deluge/i18n/hr.po +++ b/deluge/i18n/hr.po @@ -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 @@ -4482,16 +4482,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4500,7 +4500,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " @@ -6245,5 +6245,5 @@ msgstr "" msgid "Date Added:" msgstr "" -#~ msgid "<b>Languge</b>" +#~ msgid "<b>Language</b>" #~ msgstr "<b>Jezik</b>" diff --git a/deluge/i18n/hu.po b/deluge/i18n/hu.po index 1e83f2b9e..f4acc752d 100644 --- a/deluge/i18n/hu.po +++ b/deluge/i18n/hu.po @@ -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" @@ -4427,16 +4427,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4445,7 +4445,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/id.po b/deluge/i18n/id.po index fcacd264e..22af8f21f 100644 --- a/deluge/i18n/id.po +++ b/deluge/i18n/id.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/is.po b/deluge/i18n/is.po index ae38149cc..5b2cbf362 100644 --- a/deluge/i18n/is.po +++ b/deluge/i18n/is.po @@ -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" @@ -4432,16 +4432,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4450,7 +4450,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/it.po b/deluge/i18n/it.po index eecf8239f..d571b2b71 100644 --- a/deluge/i18n/it.po +++ b/deluge/i18n/it.po @@ -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" @@ -4458,16 +4458,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4476,7 +4476,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/iu.po b/deluge/i18n/iu.po index f95359d1a..e331044c2 100644 --- a/deluge/i18n/iu.po +++ b/deluge/i18n/iu.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/ja.po b/deluge/i18n/ja.po index f1bcc6bd1..576dd21ea 100644 --- a/deluge/i18n/ja.po +++ b/deluge/i18n/ja.po @@ -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" @@ -4427,16 +4427,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4445,7 +4445,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/ka.po b/deluge/i18n/ka.po index 9df9554aa..f3fd634a2 100644 --- a/deluge/i18n/ka.po +++ b/deluge/i18n/ka.po @@ -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" @@ -4473,16 +4473,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4491,7 +4491,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/kk.po b/deluge/i18n/kk.po index 88e2f6b8a..03531f5c0 100644 --- a/deluge/i18n/kk.po +++ b/deluge/i18n/kk.po @@ -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" @@ -4446,16 +4446,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4464,7 +4464,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/km.po b/deluge/i18n/km.po index 17831d8ff..c5c28fa54 100644 --- a/deluge/i18n/km.po +++ b/deluge/i18n/km.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/kn.po b/deluge/i18n/kn.po index 4ed7db089..63fc239c2 100644 --- a/deluge/i18n/kn.po +++ b/deluge/i18n/kn.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/ko.po b/deluge/i18n/ko.po index 3e706d3f8..566627211 100644 --- a/deluge/i18n/ko.po +++ b/deluge/i18n/ko.po @@ -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" @@ -4426,16 +4426,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4444,7 +4444,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/ku.po b/deluge/i18n/ku.po index e8686bff5..e07b61ee8 100644 --- a/deluge/i18n/ku.po +++ b/deluge/i18n/ku.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/ky.po b/deluge/i18n/ky.po index 012591470..9391ed855 100644 --- a/deluge/i18n/ky.po +++ b/deluge/i18n/ky.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/la.po b/deluge/i18n/la.po index 55e3a6f1b..a4248affd 100644 --- a/deluge/i18n/la.po +++ b/deluge/i18n/la.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/lb.po b/deluge/i18n/lb.po index 88a0c7d33..21b4fe160 100644 --- a/deluge/i18n/lb.po +++ b/deluge/i18n/lb.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/lt.po b/deluge/i18n/lt.po index 42755937a..24dd8605e 100644 --- a/deluge/i18n/lt.po +++ b/deluge/i18n/lt.po @@ -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" @@ -4467,16 +4467,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4485,7 +4485,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/lv.po b/deluge/i18n/lv.po index 127525018..da35853cf 100644 --- a/deluge/i18n/lv.po +++ b/deluge/i18n/lv.po @@ -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 @@ -4448,16 +4450,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4466,7 +4468,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/mk.po b/deluge/i18n/mk.po index ce6b73519..c6609827d 100644 --- a/deluge/i18n/mk.po +++ b/deluge/i18n/mk.po @@ -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" @@ -4449,16 +4449,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4467,7 +4467,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/ml.po b/deluge/i18n/ml.po index 6ac429eff..a41fc6574 100644 --- a/deluge/i18n/ml.po +++ b/deluge/i18n/ml.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/mo.po b/deluge/i18n/mo.po new file mode 100644 index 000000000..1699872b1 --- /dev/null +++ b/deluge/i18n/mo.po @@ -0,0 +1,6164 @@ +# Moldavian translation for deluge +# Copyright (c) 2023 Rosetta Contributors and Canonical Ltd 2023 +# This file is distributed under the same license as the deluge package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2023. +# +msgid "" +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: 2023-03-07 14:10+0000\n" +"Last-Translator: Vlad Nenea <Unknown>\n" +"Language-Team: Moldavian <mo@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: 2023-11-06 19:12+0000\n" +"X-Generator: Launchpad (build f1e537f62ee3967c2b3f24dd10eacf1696334fe6)\n" + +#: deluge/common.py:411 +msgid "B" +msgstr "" + +#: deluge/common.py:412 +msgid "KiB" +msgstr "" + +#: deluge/common.py:413 +msgid "MiB" +msgstr "" + +#: deluge/common.py:414 +msgid "GiB" +msgstr "" + +#: deluge/common.py:415 +msgid "TiB" +msgstr "" + +#: deluge/common.py:416 +msgid "K" +msgstr "" + +#: deluge/common.py:417 +msgid "M" +msgstr "" + +#: deluge/common.py:418 +msgid "G" +msgstr "" + +#: deluge/common.py:419 +msgid "T" +msgstr "" + +#: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442 +#: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464 +#: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484 +#: deluge/ui/gtk3/statusbar.py:526 deluge/ui/gtk3/statusbar.py:542 +#: deluge/ui/gtk3/tab_data_funcs.py:37 deluge/ui/gtk3/systemtray.py:237 +#: deluge/ui/gtk3/systemtray.py:241 deluge/ui/gtk3/systemtray.py:264 +#: 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 "" + +#: deluge/common.py:515 deluge/ui/gtk3/menubar.py:449 +#: deluge/ui/gtk3/menubar.py:455 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:80 +#: deluge/ui/console/widgets/statusbars.py:104 +#: deluge/ui/console/widgets/statusbars.py:114 +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:36 +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:4 +#: deluge/ui/web/js/deluge-all/Statusbar.js:146 +#: deluge/ui/web/js/deluge-all/Statusbar.js:205 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:94 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:121 +msgid "KiB/s" +msgstr "" + +#: deluge/common.py:521 +msgid "M/s" +msgstr "" + +#: deluge/common.py:521 +msgid "MiB/s" +msgstr "" + +#: deluge/common.py:527 +msgid "G/s" +msgstr "" + +#: deluge/common.py:527 +msgid "GiB/s" +msgstr "" + +#: deluge/common.py:533 +msgid "T/s" +msgstr "" + +#: deluge/common.py:533 +msgid "TiB/s" +msgstr "" + +#: deluge/argparserbase.py:172 +msgid "Common Options" +msgstr "" + +#: deluge/argparserbase.py:175 +msgid "Print this help message" +msgstr "" + +#: deluge/argparserbase.py:182 +msgid "Print version information" +msgstr "" + +#: deluge/argparserbase.py:194 +msgid "Set the config directory path" +msgstr "" + +#: deluge/argparserbase.py:200 +msgid "Output to specified logfile instead of stdout" +msgstr "" + +#: deluge/argparserbase.py:206 +msgid "Set the log level (none, error, warning, info, debug)" +msgstr "" + +#: deluge/argparserbase.py:215 +#, python-format +msgid "" +"Enable logfile rotation, with optional maximum logfile size, default: " +"%(const)s (Logfile rotation count is 5)" +msgstr "" + +#: deluge/argparserbase.py:223 +msgid "Quieten logging output (Same as `--loglevel none`)" +msgstr "" + +#: deluge/argparserbase.py:231 +#, python-format +msgid "" +"Profile %(prog)s with cProfile. Outputs to stdout unless a filename is " +"specified" +msgstr "" + +#: deluge/argparserbase.py:351 +msgid "Process Control Options" +msgstr "" + +#: deluge/argparserbase.py:357 +msgid "Pidfile to store the process id" +msgstr "" + +#: deluge/argparserbase.py:365 +msgid "Do not daemonize (fork) this process" +msgstr "" + +#: deluge/argparserbase.py:379 +msgid "Change to this user on startup (Requires root)" +msgstr "" + +#: deluge/argparserbase.py:386 +msgid "Change to this group on startup (Requires root)" +msgstr "" + +#: deluge/core/daemon_entry.py:25 +msgid "Daemon Options" +msgstr "" + +#: deluge/core/daemon_entry.py:31 +msgid "IP address to listen for UI connections" +msgstr "" + +#: deluge/core/daemon_entry.py:39 +msgid "Port to listen for UI connections on" +msgstr "" + +#: deluge/core/daemon_entry.py:47 +msgid "IP address to listen for BitTorrent connections" +msgstr "" + +#: deluge/core/daemon_entry.py:56 +msgid "" +"The network interface name or IP address for outgoing BitTorrent connections." +msgstr "" + +#: deluge/core/daemon_entry.py:63 +msgid "Config keys to be unmodified by `set_config` RPC" +msgstr "" + +#: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130 +#: deluge/ui/web/js/deluge-all/UI.js:18 +msgid "All" +msgstr "" + +#: deluge/ui/common.py:38 deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:490 +#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:534 +#: deluge/ui/web/js/deluge-all/UI.js:19 +msgid "Active" +msgstr "" + +#: deluge/ui/common.py:39 deluge/ui/web/js/deluge-all/UI.js:20 +msgid "Allocating" +msgstr "" + +#: 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 "" + +#: 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 "" + +#: 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 "" + +#: deluge/ui/common.py:43 deluge/ui/web/js/deluge-all/UI.js:24 +msgid "Paused" +msgstr "" + +#: deluge/ui/common.py:44 deluge/ui/web/js/deluge-all/UI.js:26 +msgid "Queued" +msgstr "" + +#: deluge/ui/common.py:45 deluge/ui/common.py:122 +#: deluge/ui/gtk3/statusbar.py:396 deluge/ui/gtk3/filtertreeview.py:131 +#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:330 +#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:94 +#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:114 +#: deluge/ui/web/js/deluge-all/Statusbar.js:351 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:358 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:417 +#: deluge/ui/web/js/deluge-all/UI.js:27 +#: deluge/ui/web/js/deluge-all/details/StatusTab.js:121 +#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:98 +#: deluge/ui/web/js/deluge-all/add/AddWindow.js:291 +#: deluge/ui/web/js/deluge-all/add/AddWindow.js:316 +msgid "Error" +msgstr "" + +#: deluge/ui/common.py:50 deluge/ui/gtk3/listview.py:793 +#: deluge/ui/gtk3/torrentview.py:180 deluge/ui/gtk3/torrentview.py:276 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:107 +msgid "Name" +msgstr "" + +#: deluge/ui/common.py:51 deluge/ui/common.py:53 +#: deluge/ui/gtk3/files_tab.py:126 deluge/ui/gtk3/torrentview.py:310 +#: deluge/ui/gtk3/peers_tab.py:120 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:121 +#: deluge/ui/web/js/deluge-all/details/PeersTab.js:80 +#: deluge/ui/web/js/deluge-all/details/FilesTab.js:34 +msgid "Progress" +msgstr "" + +#: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12 +msgid "State" +msgstr "" + +#: deluge/ui/common.py:54 deluge/ui/gtk3/createtorrentdialog.py:72 +#: deluge/ui/gtk3/addtorrentdialog.py:123 deluge/ui/gtk3/files_tab.py:113 +#: deluge/ui/gtk3/torrentview.py:283 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:174 +#: deluge/ui/console/modes/preferences/preference_panes.py:738 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:114 +#: deluge/ui/web/js/deluge-all/details/FilesTab.js:23 +#: deluge/ui/web/js/deluge-all/add/FilesTab.js:33 +msgid "Size" +msgstr "" + +#: deluge/ui/common.py:55 deluge/ui/gtk3/torrentview.py:289 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:244 +msgid "Downloaded" +msgstr "" + +#: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:252 +msgid "Uploaded" +msgstr "" + +#: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:260 +msgid "Remaining" +msgstr "" + +#: deluge/ui/common.py:58 deluge/ui/gtk3/torrentview.py:373 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:165 +msgid "Ratio" +msgstr "" + +#: 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 "" + +#: 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 "" + +#: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:268 +msgid "Down Limit" +msgstr "" + +#: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:276 +msgid "Up Limit" +msgstr "" + +#: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101 +msgid "Max Connections" +msgstr "" + +#: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109 +msgid "Max Upload Slots" +msgstr "" + +#: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:136 +#: deluge/ui/web/js/deluge-all/details/PeersTab.js:46 +msgid "Peers" +msgstr "" + +#: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:128 +msgid "Seeds" +msgstr "" + +#: deluge/ui/common.py:67 deluge/ui/gtk3/torrentview.py:380 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:173 +msgid "Avail" +msgstr "" + +#: deluge/ui/common.py:68 deluge/ui/gtk3/torrentview.py:333 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:284 +msgid "Seeds:Peers" +msgstr "" + +#: deluge/ui/common.py:69 deluge/ui/gtk3/listview.py:203 +#: deluge/ui/gtk3/torrentview.py:387 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:181 +msgid "Added" +msgstr "" + +#: deluge/ui/common.py:70 deluge/ui/gtk3/createtorrentdialog.py:88 +#: deluge/ui/gtk3/edittrackersdialog.py:127 deluge/ui/gtk3/torrentview.py:408 +#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:57 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:205 +msgid "Tracker" +msgstr "" + +#: deluge/ui/common.py:72 deluge/ui/gtk3/torrentview.py:414 +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:10 +#: deluge/ui/web/js/deluge-all/MoveStorage.js:48 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:213 +#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:31 +msgid "Download Folder" +msgstr "" + +#: deluge/ui/common.py:75 +msgid "Seeding Time" +msgstr "" + +#: deluge/ui/common.py:76 +msgid "Active Time" +msgstr "" + +#: deluge/ui/common.py:78 +msgid "Last Activity" +msgstr "" + +#: deluge/ui/common.py:81 +msgid "Finished Time" +msgstr "" + +#: deluge/ui/common.py:83 deluge/ui/gtk3/torrentview.py:401 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:189 +msgid "Complete Seen" +msgstr "" + +#: deluge/ui/common.py:86 deluge/ui/gtk3/torrentview.py:394 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:197 +msgid "Completed" +msgstr "" + +#: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:158 +msgid "ETA" +msgstr "" + +#: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:236 +msgid "Shared" +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 +msgid "Prioritize First/Last" +msgstr "" + +#: deluge/ui/common.py:94 deluge/ui/gtk3/glade/main_window.tabs.ui.h:32 +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:14 +#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:143 +msgid "Sequential Download" +msgstr "" + +#: deluge/ui/common.py:97 deluge/ui/common.py:98 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:35 +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:11 +#: deluge/ui/web/js/deluge-all/Menus.js:253 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:195 +msgid "Auto Managed" +msgstr "" + +#: deluge/ui/common.py:99 +msgid "Stop At Ratio" +msgstr "" + +#: deluge/ui/common.py:100 +msgid "Stop Ratio" +msgstr "" + +#: deluge/ui/common.py:101 +msgid "Remove At Ratio" +msgstr "" + +#: deluge/ui/common.py:102 deluge/ui/common.py:108 +msgid "Move On Completed" +msgstr "" + +#: deluge/ui/common.py:104 +msgid "Move Completed Path" +msgstr "" + +#: deluge/ui/common.py:112 +msgid "Move On Completed Path" +msgstr "" + +#: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135 +#: deluge/ui/gtk3/torrentview.py:416 +#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:499 +#: deluge/ui/web/js/deluge-all/FilterPanel.js:32 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:221 +msgid "Owner" +msgstr "" + +#: deluge/ui/common.py:116 +msgid "Pieces" +msgstr "" + +#: deluge/ui/common.py:117 +msgid "Seed Rank" +msgstr "" + +#: 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 "" + +#: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122 +msgid "Warning" +msgstr "" + +#: deluge/ui/common.py:124 deluge/ui/web/js/deluge-all/details/StatusTab.js:123 +msgid "Announce OK" +msgstr "" + +#: deluge/ui/common.py:125 deluge/ui/web/js/deluge-all/details/StatusTab.js:124 +msgid "Announce Sent" +msgstr "" + +#: deluge/ui/common.py:129 +#: deluge/ui/console/modes/preferences/preference_panes.py:174 +#: deluge/ui/console/modes/preferences/preferences.py:89 +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:18 +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:31 +msgid "Interface" +msgstr "" + +#: deluge/ui/common.py:130 +#: deluge/ui/console/modes/preferences/preference_panes.py:230 +#: deluge/ui/console/modes/preferences/preferences.py:90 +#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:21 +msgid "Downloads" +msgstr "" + +#: deluge/ui/common.py:131 deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:33 +#: deluge/ui/console/modes/preferences/preference_panes.py:409 +#: deluge/ui/console/modes/preferences/preferences.py:92 +#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:3 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:68 +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21 +#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73 +msgid "Bandwidth" +msgstr "" + +#: deluge/ui/common.py:132 +#: deluge/ui/console/modes/preferences/preference_panes.py:550 +#: deluge/ui/console/modes/preferences/preferences.py:95 +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:15 +#: deluge/ui/web/js/deluge-all/Menus.js:277 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18 +msgid "Queue" +msgstr "" + +#: deluge/ui/common.py:133 +#: deluge/ui/console/modes/preferences/preference_panes.py:300 +#: deluge/ui/console/modes/preferences/preferences.py:91 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:28 +msgid "Network" +msgstr "" + +#: deluge/ui/common.py:134 deluge/ui/gtk3/glade/preferences_dialog.ui.h:146 +#: deluge/ui/console/modes/preferences/preference_panes.py:640 +#: deluge/ui/console/modes/preferences/preference_panes.py:647 +#: deluge/ui/console/modes/preferences/preferences.py:96 +#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:21 +#: deluge/ui/web/js/deluge-all/preferences/ProxyPage.js:35 +msgid "Proxy" +msgstr "" + +#: deluge/ui/common.py:135 +#: deluge/ui/console/modes/preferences/preference_panes.py:685 +#: deluge/ui/console/modes/preferences/preferences.py:97 +#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:18 +msgid "Cache" +msgstr "" + +#: deluge/ui/common.py:136 deluge/ui/gtk3/glade/preferences_dialog.ui.h:190 +#: deluge/ui/console/modes/preferences/preference_panes.py:499 +#: deluge/ui/console/modes/preferences/preferences.py:93 +#: deluge/ui/web/js/deluge-all/Statusbar.js:80 +#: deluge/ui/web/js/deluge-all/Statusbar.js:139 +#: deluge/ui/web/js/deluge-all/Statusbar.js:198 +#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:21 +#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:69 +msgid "Other" +msgstr "" + +#: deluge/ui/common.py:137 +#: deluge/ui/console/modes/preferences/preference_panes.py:524 +#: deluge/ui/console/modes/preferences/preferences.py:94 +#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:18 +msgid "Daemon" +msgstr "" + +#: deluge/ui/common.py:138 +#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:18 +msgid "Plugins" +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 "" + +#: 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 "" + +#: 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 "" + +#: 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 "" + +#: deluge/ui/client.py:681 +msgid "" +"Deluge cannot find the `deluged` executable, check that the deluged package " +"is installed, or added to your PATH." +msgstr "" + +#: deluge/ui/countries.py:10 +msgid "Afghanistan" +msgstr "" + +#: deluge/ui/countries.py:11 +msgid "Aland Islands" +msgstr "" + +#: deluge/ui/countries.py:12 +msgid "Albania" +msgstr "" + +#: deluge/ui/countries.py:13 +msgid "Algeria" +msgstr "" + +#: deluge/ui/countries.py:14 +msgid "American Samoa" +msgstr "" + +#: deluge/ui/countries.py:15 +msgid "Andorra" +msgstr "" + +#: deluge/ui/countries.py:16 +msgid "Angola" +msgstr "" + +#: deluge/ui/countries.py:17 +msgid "Anguilla" +msgstr "" + +#: deluge/ui/countries.py:18 +msgid "Antarctica" +msgstr "" + +#: deluge/ui/countries.py:19 +msgid "Antigua and Barbuda" +msgstr "" + +#: deluge/ui/countries.py:20 +msgid "Argentina" +msgstr "" + +#: deluge/ui/countries.py:21 +msgid "Armenia" +msgstr "" + +#: deluge/ui/countries.py:22 +msgid "Aruba" +msgstr "" + +#: deluge/ui/countries.py:23 +msgid "Australia" +msgstr "" + +#: deluge/ui/countries.py:24 +msgid "Austria" +msgstr "" + +#: deluge/ui/countries.py:25 +msgid "Azerbaijan" +msgstr "" + +#: deluge/ui/countries.py:26 +msgid "Bahamas" +msgstr "" + +#: deluge/ui/countries.py:27 +msgid "Bahrain" +msgstr "" + +#: deluge/ui/countries.py:28 +msgid "Bangladesh" +msgstr "" + +#: deluge/ui/countries.py:29 +msgid "Barbados" +msgstr "" + +#: deluge/ui/countries.py:30 +msgid "Belarus" +msgstr "" + +#: deluge/ui/countries.py:31 +msgid "Belgium" +msgstr "" + +#: deluge/ui/countries.py:32 +msgid "Belize" +msgstr "" + +#: deluge/ui/countries.py:33 +msgid "Benin" +msgstr "" + +#: deluge/ui/countries.py:34 +msgid "Bermuda" +msgstr "" + +#: deluge/ui/countries.py:35 +msgid "Bhutan" +msgstr "" + +#: deluge/ui/countries.py:36 +msgid "Bolivia" +msgstr "" + +#: deluge/ui/countries.py:37 +msgid "Bosnia and Herzegovina" +msgstr "" + +#: deluge/ui/countries.py:38 +msgid "Botswana" +msgstr "" + +#: deluge/ui/countries.py:39 +msgid "Bouvet Island" +msgstr "" + +#: deluge/ui/countries.py:40 +msgid "Brazil" +msgstr "" + +#: deluge/ui/countries.py:41 +msgid "British Indian Ocean Territory" +msgstr "" + +#: deluge/ui/countries.py:42 +msgid "Brunei Darussalam" +msgstr "" + +#: deluge/ui/countries.py:43 +msgid "Bulgaria" +msgstr "" + +#: deluge/ui/countries.py:44 +msgid "Burkina Faso" +msgstr "" + +#: deluge/ui/countries.py:45 +msgid "Burundi" +msgstr "" + +#: deluge/ui/countries.py:46 +msgid "Cambodia" +msgstr "" + +#: deluge/ui/countries.py:47 +msgid "Cameroon" +msgstr "" + +#: deluge/ui/countries.py:48 +msgid "Canada" +msgstr "" + +#: deluge/ui/countries.py:49 +msgid "Cape Verde" +msgstr "" + +#: deluge/ui/countries.py:50 +msgid "Cayman Islands" +msgstr "" + +#: deluge/ui/countries.py:51 +msgid "Central African Republic" +msgstr "" + +#: deluge/ui/countries.py:52 +msgid "Chad" +msgstr "" + +#: deluge/ui/countries.py:53 +msgid "Chile" +msgstr "" + +#: deluge/ui/countries.py:54 +msgid "China" +msgstr "" + +#: deluge/ui/countries.py:55 +msgid "Christmas Island" +msgstr "" + +#: deluge/ui/countries.py:56 +msgid "Cocos (Keeling) Islands" +msgstr "" + +#: deluge/ui/countries.py:57 +msgid "Colombia" +msgstr "" + +#: deluge/ui/countries.py:58 +msgid "Comoros" +msgstr "" + +#: deluge/ui/countries.py:59 +msgid "Congo" +msgstr "" + +#: deluge/ui/countries.py:60 +msgid "Congo, The Democratic Republic of the" +msgstr "" + +#: deluge/ui/countries.py:61 +msgid "Cook Islands" +msgstr "" + +#: deluge/ui/countries.py:62 +msgid "Costa Rica" +msgstr "" + +#: deluge/ui/countries.py:63 +msgid "Cote d'Ivoire" +msgstr "" + +#: deluge/ui/countries.py:64 +msgid "Croatia" +msgstr "" + +#: deluge/ui/countries.py:65 +msgid "Cuba" +msgstr "" + +#: deluge/ui/countries.py:66 +msgid "Cyprus" +msgstr "" + +#: deluge/ui/countries.py:67 +msgid "Czech Republic" +msgstr "" + +#: deluge/ui/countries.py:68 +msgid "Denmark" +msgstr "" + +#: deluge/ui/countries.py:69 +msgid "Djibouti" +msgstr "" + +#: deluge/ui/countries.py:70 +msgid "Dominica" +msgstr "" + +#: deluge/ui/countries.py:71 +msgid "Dominican Republic" +msgstr "" + +#: deluge/ui/countries.py:72 +msgid "Ecuador" +msgstr "" + +#: deluge/ui/countries.py:73 +msgid "Egypt" +msgstr "" + +#: deluge/ui/countries.py:74 +msgid "El Salvador" +msgstr "" + +#: deluge/ui/countries.py:75 +msgid "Equatorial Guinea" +msgstr "" + +#: deluge/ui/countries.py:76 +msgid "Eritrea" +msgstr "" + +#: deluge/ui/countries.py:77 +msgid "Estonia" +msgstr "" + +#: deluge/ui/countries.py:78 +msgid "Ethiopia" +msgstr "" + +#: deluge/ui/countries.py:79 +msgid "Falkland Islands (Malvinas)" +msgstr "" + +#: deluge/ui/countries.py:80 +msgid "Faroe Islands" +msgstr "" + +#: deluge/ui/countries.py:81 +msgid "Fiji" +msgstr "" + +#: deluge/ui/countries.py:82 +msgid "Finland" +msgstr "" + +#: deluge/ui/countries.py:83 +msgid "France" +msgstr "" + +#: deluge/ui/countries.py:84 +msgid "French Guiana" +msgstr "" + +#: deluge/ui/countries.py:85 +msgid "French Polynesia" +msgstr "" + +#: deluge/ui/countries.py:86 +msgid "French Southern Territories" +msgstr "" + +#: deluge/ui/countries.py:87 +msgid "Gabon" +msgstr "" + +#: deluge/ui/countries.py:88 +msgid "Gambia" +msgstr "" + +#: deluge/ui/countries.py:89 +msgid "Georgia" +msgstr "" + +#: deluge/ui/countries.py:90 +msgid "Germany" +msgstr "" + +#: deluge/ui/countries.py:91 +msgid "Ghana" +msgstr "" + +#: deluge/ui/countries.py:92 +msgid "Gibraltar" +msgstr "" + +#: deluge/ui/countries.py:93 +msgid "Greece" +msgstr "" + +#: deluge/ui/countries.py:94 +msgid "Greenland" +msgstr "" + +#: deluge/ui/countries.py:95 +msgid "Grenada" +msgstr "" + +#: deluge/ui/countries.py:96 +msgid "Guadeloupe" +msgstr "" + +#: deluge/ui/countries.py:97 +msgid "Guam" +msgstr "" + +#: deluge/ui/countries.py:98 +msgid "Guatemala" +msgstr "" + +#: deluge/ui/countries.py:99 +msgid "Guernsey" +msgstr "" + +#: deluge/ui/countries.py:100 +msgid "Guinea" +msgstr "" + +#: deluge/ui/countries.py:101 +msgid "Guinea-Bissau" +msgstr "" + +#: deluge/ui/countries.py:102 +msgid "Guyana" +msgstr "" + +#: deluge/ui/countries.py:103 +msgid "Haiti" +msgstr "" + +#: deluge/ui/countries.py:104 +msgid "Heard Island and McDonald Islands" +msgstr "" + +#: deluge/ui/countries.py:105 +msgid "Holy See (Vatican City State)" +msgstr "" + +#: deluge/ui/countries.py:106 +msgid "Honduras" +msgstr "" + +#: deluge/ui/countries.py:107 +msgid "Hong Kong" +msgstr "" + +#: deluge/ui/countries.py:108 +msgid "Hungary" +msgstr "" + +#: deluge/ui/countries.py:109 +msgid "Iceland" +msgstr "" + +#: deluge/ui/countries.py:110 +msgid "India" +msgstr "" + +#: deluge/ui/countries.py:111 +msgid "Indonesia" +msgstr "" + +#: deluge/ui/countries.py:112 +msgid "Iran, Islamic Republic of" +msgstr "" + +#: deluge/ui/countries.py:113 +msgid "Iraq" +msgstr "" + +#: deluge/ui/countries.py:114 +msgid "Ireland" +msgstr "" + +#: deluge/ui/countries.py:115 +msgid "Isle of Man" +msgstr "" + +#: deluge/ui/countries.py:116 +msgid "Israel" +msgstr "" + +#: deluge/ui/countries.py:117 +msgid "Italy" +msgstr "" + +#: deluge/ui/countries.py:118 +msgid "Jamaica" +msgstr "" + +#: deluge/ui/countries.py:119 +msgid "Japan" +msgstr "" + +#: deluge/ui/countries.py:120 +msgid "Jersey" +msgstr "" + +#: deluge/ui/countries.py:121 +msgid "Jordan" +msgstr "" + +#: deluge/ui/countries.py:122 +msgid "Kazakhstan" +msgstr "" + +#: deluge/ui/countries.py:123 +msgid "Kenya" +msgstr "" + +#: deluge/ui/countries.py:124 +msgid "Kiribati" +msgstr "" + +#: deluge/ui/countries.py:125 +msgid "Korea, Democratic People's Republic of" +msgstr "" + +#: deluge/ui/countries.py:126 +msgid "Korea, Republic of" +msgstr "" + +#: deluge/ui/countries.py:127 +msgid "Kuwait" +msgstr "" + +#: deluge/ui/countries.py:128 +msgid "Kyrgyzstan" +msgstr "" + +#: deluge/ui/countries.py:129 +msgid "Lao People's Democratic Republic" +msgstr "" + +#: deluge/ui/countries.py:130 +msgid "Latvia" +msgstr "" + +#: deluge/ui/countries.py:131 +msgid "Lebanon" +msgstr "" + +#: deluge/ui/countries.py:132 +msgid "Lesotho" +msgstr "" + +#: deluge/ui/countries.py:133 +msgid "Liberia" +msgstr "" + +#: deluge/ui/countries.py:134 +msgid "Libyan Arab Jamahiriya" +msgstr "" + +#: deluge/ui/countries.py:135 +msgid "Liechtenstein" +msgstr "" + +#: deluge/ui/countries.py:136 +msgid "Lithuania" +msgstr "" + +#: deluge/ui/countries.py:137 +msgid "Luxembourg" +msgstr "" + +#: deluge/ui/countries.py:138 +msgid "Macao" +msgstr "" + +#: deluge/ui/countries.py:139 +msgid "Macedonia, The Former Yugoslav Republic of" +msgstr "" + +#: deluge/ui/countries.py:140 +msgid "Madagascar" +msgstr "" + +#: deluge/ui/countries.py:141 +msgid "Malawi" +msgstr "" + +#: deluge/ui/countries.py:142 +msgid "Malaysia" +msgstr "" + +#: deluge/ui/countries.py:143 +msgid "Maldives" +msgstr "" + +#: deluge/ui/countries.py:144 +msgid "Mali" +msgstr "" + +#: deluge/ui/countries.py:145 +msgid "Malta" +msgstr "" + +#: deluge/ui/countries.py:146 +msgid "Marshall Islands" +msgstr "" + +#: deluge/ui/countries.py:147 +msgid "Martinique" +msgstr "" + +#: deluge/ui/countries.py:148 +msgid "Mauritania" +msgstr "" + +#: deluge/ui/countries.py:149 +msgid "Mauritius" +msgstr "" + +#: deluge/ui/countries.py:150 +msgid "Mayotte" +msgstr "" + +#: deluge/ui/countries.py:151 +msgid "Mexico" +msgstr "" + +#: deluge/ui/countries.py:152 +msgid "Micronesia, Federated States of" +msgstr "" + +#: deluge/ui/countries.py:153 +msgid "Moldova" +msgstr "" + +#: deluge/ui/countries.py:154 +msgid "Monaco" +msgstr "" + +#: deluge/ui/countries.py:155 +msgid "Mongolia" +msgstr "" + +#: deluge/ui/countries.py:156 +msgid "Montenegro" +msgstr "" + +#: deluge/ui/countries.py:157 +msgid "Montserrat" +msgstr "" + +#: deluge/ui/countries.py:158 +msgid "Morocco" +msgstr "" + +#: deluge/ui/countries.py:159 +msgid "Mozambique" +msgstr "" + +#: deluge/ui/countries.py:160 +msgid "Myanmar" +msgstr "" + +#: deluge/ui/countries.py:161 +msgid "Namibia" +msgstr "" + +#: deluge/ui/countries.py:162 +msgid "Nauru" +msgstr "" + +#: deluge/ui/countries.py:163 +msgid "Nepal" +msgstr "" + +#: deluge/ui/countries.py:164 +msgid "Netherlands" +msgstr "" + +#: deluge/ui/countries.py:165 +msgid "Netherlands Antilles" +msgstr "" + +#: deluge/ui/countries.py:166 +msgid "New Caledonia" +msgstr "" + +#: deluge/ui/countries.py:167 +msgid "New Zealand" +msgstr "" + +#: deluge/ui/countries.py:168 +msgid "Nicaragua" +msgstr "" + +#: deluge/ui/countries.py:169 +msgid "Niger" +msgstr "" + +#: deluge/ui/countries.py:170 +msgid "Nigeria" +msgstr "" + +#: deluge/ui/countries.py:171 +msgid "Niue" +msgstr "" + +#: deluge/ui/countries.py:172 +msgid "Norfolk Island" +msgstr "" + +#: deluge/ui/countries.py:173 +msgid "Northern Mariana Islands" +msgstr "" + +#: deluge/ui/countries.py:174 +msgid "Norway" +msgstr "" + +#: deluge/ui/countries.py:175 +msgid "Oman" +msgstr "" + +#: deluge/ui/countries.py:176 +msgid "Pakistan" +msgstr "" + +#: deluge/ui/countries.py:177 +msgid "Palau" +msgstr "" + +#: deluge/ui/countries.py:178 +msgid "Palestinian Territory, Occupied" +msgstr "" + +#: deluge/ui/countries.py:179 +msgid "Panama" +msgstr "" + +#: deluge/ui/countries.py:180 +msgid "Papua New Guinea" +msgstr "" + +#: deluge/ui/countries.py:181 +msgid "Paraguay" +msgstr "" + +#: deluge/ui/countries.py:182 +msgid "Peru" +msgstr "" + +#: deluge/ui/countries.py:183 +msgid "Philippines" +msgstr "" + +#: deluge/ui/countries.py:184 +msgid "Pitcairn" +msgstr "" + +#: deluge/ui/countries.py:185 +msgid "Poland" +msgstr "" + +#: deluge/ui/countries.py:186 +msgid "Portugal" +msgstr "" + +#: deluge/ui/countries.py:187 +msgid "Puerto Rico" +msgstr "" + +#: deluge/ui/countries.py:188 +msgid "Qatar" +msgstr "" + +#: deluge/ui/countries.py:189 +msgid "Reunion" +msgstr "" + +#: deluge/ui/countries.py:190 +msgid "Romania" +msgstr "" + +#: deluge/ui/countries.py:191 +msgid "Russian Federation" +msgstr "" + +#: deluge/ui/countries.py:192 +msgid "Rwanda" +msgstr "" + +#: deluge/ui/countries.py:193 +msgid "Saint Barthelemy" +msgstr "" + +#: deluge/ui/countries.py:194 +msgid "Saint Helena" +msgstr "" + +#: deluge/ui/countries.py:195 +msgid "Saint Kitts and Nevis" +msgstr "" + +#: deluge/ui/countries.py:196 +msgid "Saint Lucia" +msgstr "" + +#: deluge/ui/countries.py:197 +msgid "Saint Martin" +msgstr "" + +#: deluge/ui/countries.py:198 +msgid "Saint Pierre and Miquelon" +msgstr "" + +#: deluge/ui/countries.py:199 +msgid "Saint Vincent and the Grenadines" +msgstr "" + +#: deluge/ui/countries.py:200 +msgid "Samoa" +msgstr "" + +#: deluge/ui/countries.py:201 +msgid "San Marino" +msgstr "" + +#: deluge/ui/countries.py:202 +msgid "Sao Tome and Principe" +msgstr "" + +#: deluge/ui/countries.py:203 +msgid "Saudi Arabia" +msgstr "" + +#: deluge/ui/countries.py:204 +msgid "Senegal" +msgstr "" + +#: deluge/ui/countries.py:205 +msgid "Serbia" +msgstr "" + +#: deluge/ui/countries.py:206 +msgid "Seychelles" +msgstr "" + +#: deluge/ui/countries.py:207 +msgid "Sierra Leone" +msgstr "" + +#: deluge/ui/countries.py:208 +msgid "Singapore" +msgstr "" + +#: deluge/ui/countries.py:209 +msgid "Slovakia" +msgstr "" + +#: deluge/ui/countries.py:210 +msgid "Slovenia" +msgstr "" + +#: deluge/ui/countries.py:211 +msgid "Solomon Islands" +msgstr "" + +#: deluge/ui/countries.py:212 +msgid "Somalia" +msgstr "" + +#: deluge/ui/countries.py:213 +msgid "South Africa" +msgstr "" + +#: deluge/ui/countries.py:214 +msgid "South Georgia and the South Sandwich Islands" +msgstr "" + +#: deluge/ui/countries.py:215 +msgid "Spain" +msgstr "" + +#: deluge/ui/countries.py:216 +msgid "Sri Lanka" +msgstr "" + +#: deluge/ui/countries.py:217 +msgid "Sudan" +msgstr "" + +#: deluge/ui/countries.py:218 +msgid "Suriname" +msgstr "" + +#: deluge/ui/countries.py:219 +msgid "Svalbard and Jan Mayen" +msgstr "" + +#: deluge/ui/countries.py:220 +msgid "Swaziland" +msgstr "" + +#: deluge/ui/countries.py:221 +msgid "Sweden" +msgstr "" + +#: deluge/ui/countries.py:222 +msgid "Switzerland" +msgstr "" + +#: deluge/ui/countries.py:223 +msgid "Syrian Arab Republic" +msgstr "" + +#: deluge/ui/countries.py:224 +msgid "Taiwan" +msgstr "" + +#: deluge/ui/countries.py:225 +msgid "Tajikistan" +msgstr "" + +#: deluge/ui/countries.py:226 +msgid "Tanzania, United Republic of" +msgstr "" + +#: deluge/ui/countries.py:227 +msgid "Thailand" +msgstr "" + +#: deluge/ui/countries.py:228 +msgid "Timor-Leste" +msgstr "" + +#: deluge/ui/countries.py:229 +msgid "Togo" +msgstr "" + +#: deluge/ui/countries.py:230 +msgid "Tokelau" +msgstr "" + +#: deluge/ui/countries.py:231 +msgid "Tonga" +msgstr "" + +#: deluge/ui/countries.py:232 +msgid "Trinidad and Tobago" +msgstr "" + +#: deluge/ui/countries.py:233 +msgid "Tunisia" +msgstr "" + +#: deluge/ui/countries.py:234 +msgid "Turkey" +msgstr "" + +#: deluge/ui/countries.py:235 +msgid "Turkmenistan" +msgstr "" + +#: deluge/ui/countries.py:236 +msgid "Turks and Caicos Islands" +msgstr "" + +#: deluge/ui/countries.py:237 +msgid "Tuvalu" +msgstr "" + +#: deluge/ui/countries.py:238 +msgid "Uganda" +msgstr "" + +#: deluge/ui/countries.py:239 +msgid "Ukraine" +msgstr "" + +#: deluge/ui/countries.py:240 +msgid "United Arab Emirates" +msgstr "" + +#: deluge/ui/countries.py:241 +msgid "United Kingdom" +msgstr "" + +#: deluge/ui/countries.py:242 +msgid "United States" +msgstr "" + +#: deluge/ui/countries.py:243 +msgid "United States Minor Outlying Islands" +msgstr "" + +#: deluge/ui/countries.py:244 +msgid "Uruguay" +msgstr "" + +#: deluge/ui/countries.py:245 +msgid "Uzbekistan" +msgstr "" + +#: deluge/ui/countries.py:246 +msgid "Vanuatu" +msgstr "" + +#: deluge/ui/countries.py:247 +msgid "Venezuela" +msgstr "" + +#: deluge/ui/countries.py:248 +msgid "Viet Nam" +msgstr "" + +#: deluge/ui/countries.py:249 +msgid "Virgin Islands, British" +msgstr "" + +#: deluge/ui/countries.py:250 +msgid "Virgin Islands, U.S." +msgstr "" + +#: deluge/ui/countries.py:251 +msgid "Wallis and Futuna" +msgstr "" + +#: deluge/ui/countries.py:252 +msgid "Western Sahara" +msgstr "" + +#: deluge/ui/countries.py:253 +msgid "Yemen" +msgstr "" + +#: deluge/ui/countries.py:254 +msgid "Zambia" +msgstr "" + +#: deluge/ui/countries.py:255 +msgid "Zimbabwe" +msgstr "" + +#: deluge/ui/ui_entry.py:51 +msgid "UI Options" +msgstr "" + +#: deluge/ui/ui_entry.py:57 +msgid "Set the default UI to be run, when no UI is specified" +msgstr "" + +#: deluge/ui/ui_entry.py:91 +msgid "" +"Alternative UI to launch, with optional ui args \n" +" (default UI: *)" +msgstr "" + +#: deluge/ui/web/web.py:32 +msgid "Web Server Options" +msgstr "" + +#: deluge/ui/web/web.py:38 +msgid "IP address for web server to listen on" +msgstr "" + +#: deluge/ui/web/web.py:46 +msgid "Port for web server to listen on" +msgstr "" + +#: deluge/ui/web/web.py:53 +msgid "Set the base path that the ui is running on" +msgstr "" + +#: deluge/ui/web/web.py:56 +msgid "Force the web server to use SSL" +msgstr "" + +#: deluge/ui/web/web.py:61 +msgid "Force the web server to disable SSL" +msgstr "" + +#: deluge/ui/web/json_api.py:868 +msgid "Daemon does not exist" +msgstr "" + +#: deluge/ui/web/json_api.py:875 +msgid "Daemon not running" +msgstr "" + +#: deluge/ui/gtk3/createtorrentdialog.py:62 +#: deluge/ui/gtk3/addtorrentdialog.py:110 deluge/ui/gtk3/files_tab.py:92 +#: deluge/ui/web/js/deluge-all/details/FilesTab.js:18 +#: deluge/ui/web/js/deluge-all/add/FilesTab.js:28 +msgid "Filename" +msgstr "" + +#: deluge/ui/gtk3/createtorrentdialog.py:85 +#: deluge/ui/gtk3/edittrackersdialog.py:124 +#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:52 +msgid "Tier" +msgstr "" + +#: deluge/ui/gtk3/createtorrentdialog.py:128 +msgid "Choose a file" +msgstr "" + +#: deluge/ui/gtk3/createtorrentdialog.py:132 +#: deluge/ui/gtk3/createtorrentdialog.py:169 +#: deluge/ui/gtk3/createtorrentdialog.py:258 +#: deluge/ui/gtk3/addtorrentdialog.py:698 deluge/ui/gtk3/dialogs.py:203 +#: deluge/ui/gtk3/dialogs.py:261 deluge/ui/gtk3/dialogs.py:273 +#: deluge/ui/gtk3/dialogs.py:364 deluge/ui/gtk3/dialogs.py:427 +#: deluge/ui/gtk3/preferences.py:1158 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:15 +#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:2 +#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:2 +#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:2 +#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:2 +#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:2 +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:2 +#: deluge/ui/gtk3/glade/edit_trackers.ui.h:2 +#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:2 +#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:2 +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:29 +#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:2 +#: deluge/ui/gtk3/glade/other_dialog.ui.h:1 +#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:2 +#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:2 +msgid "_Cancel" +msgstr "" + +#: deluge/ui/gtk3/createtorrentdialog.py:134 +#: deluge/ui/gtk3/createtorrentdialog.py:171 +#: deluge/ui/gtk3/addtorrentdialog.py:700 deluge/ui/gtk3/preferences.py:1160 +msgid "_Open" +msgstr "" + +#: deluge/ui/gtk3/createtorrentdialog.py:165 +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:28 +msgid "Choose a folder" +msgstr "" + +#: deluge/ui/gtk3/createtorrentdialog.py:254 +#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:4 +msgid "Save .torrent file" +msgstr "" + +#: deluge/ui/gtk3/createtorrentdialog.py:260 +#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:3 +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:30 +msgid "_Save" +msgstr "" + +#: deluge/ui/gtk3/createtorrentdialog.py:271 +#: deluge/ui/gtk3/addtorrentdialog.py:712 +msgid "Torrent files" +msgstr "" + +#: deluge/ui/gtk3/createtorrentdialog.py:275 +#: deluge/ui/gtk3/addtorrentdialog.py:716 +msgid "All files" +msgstr "" + +#: deluge/ui/gtk3/mainwindow.py:192 +msgid "Enter your password to show Deluge..." +msgstr "" + +#: deluge/ui/gtk3/mainwindow.py:251 +msgid "Enter your password to Quit Deluge..." +msgstr "" + +#: deluge/ui/gtk3/mainwindow.py:343 +#, python-brace-format +msgid "D: {download_rate} U: {upload_rate} - Deluge" +msgstr "" + +#: deluge/ui/gtk3/mainwindow.py:357 deluge/ui/gtk3/aboutdialog.py:26 +#: deluge/ui/gtk3/aboutdialog.py:27 deluge/ui/gtk3/systemtray.py:96 +#: deluge/ui/gtk3/systemtray.py:184 deluge/ui/gtk3/systemtray.py:244 +#: deluge/ui/data/share/applications/deluge.desktop.in.h:1 +#: deluge/ui/web/js/deluge-all/Toolbar.js:23 +#: deluge/ui/web/js/deluge-all/AboutWindow.js:91 +msgid "Deluge" +msgstr "" + +#: deluge/ui/gtk3/path_combo_chooser.py:393 +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20 +msgid "Edit path" +msgstr "" + +#: deluge/ui/gtk3/path_combo_chooser.py:395 +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21 +msgid "Remove path" +msgstr "" + +#: deluge/ui/gtk3/options_tab.py:136 +msgid "_Apply to selected" +msgstr "" + +#: deluge/ui/gtk3/aboutdialog.py:40 +#, python-format +msgid "Copyright %(year_start)s-%(year_end)s Deluge Team" +msgstr "" + +#: deluge/ui/gtk3/aboutdialog.py:44 +#: deluge/ui/web/js/deluge-all/AboutWindow.js:52 +msgid "" +"A peer-to-peer file sharing program\n" +"utilizing the BitTorrent protocol." +msgstr "" + +#: deluge/ui/gtk3/aboutdialog.py:46 +#: deluge/ui/web/js/deluge-all/AboutWindow.js:55 +msgid "Client:" +msgstr "" + +#: deluge/ui/gtk3/aboutdialog.py:52 +msgid "Current Developers:" +msgstr "" + +#: deluge/ui/gtk3/aboutdialog.py:61 +msgid "Past Developers or Contributors:" +msgstr "" + +#: deluge/ui/gtk3/aboutdialog.py:795 +msgid "" +"This program is free software; you can redistribute it and/or modify it " +"under the terms of the GNU General Public License as published by the Free " +"Software Foundation; either version 3 of the License, or (at your option) " +"any later version. \n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT " +"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " +"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " +"more details. \n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program; if not, see <http://www.gnu.org/licenses>. \n" +"\n" +"In addition, as a special exception, the copyright holders give permission " +"to link the code of portions of this program with the OpenSSL library. You " +"must obey the GNU General Public License in all respects for all of the code " +"used other than OpenSSL. \n" +"\n" +"If you modify file(s) with this exception, you may extend this exception to " +"your version of the file(s), but you are not obligated to do so. If you do " +"not wish to do so, delete this exception statement from your version. If you " +"delete this exception statement from all source files in the program, then " +"also delete it here." +msgstr "" + +#: deluge/ui/gtk3/aboutdialog.py:829 +#: deluge/ui/web/js/deluge-all/AboutWindow.js:65 +msgid "Server:" +msgstr "" + +#: deluge/ui/gtk3/aboutdialog.py:833 +#: deluge/ui/web/js/deluge-all/AboutWindow.js:41 +msgid "libtorrent:" +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:102 deluge/ui/gtk3/queuedtorrents.py:51 +msgid "Torrent" +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:232 +#, python-format +msgid "Add Torrents (%d)" +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:238 +msgid "Duplicate torrent(s)" +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:240 +#, python-format +msgid "" +"You cannot add the same torrent twice. %d torrents were already added." +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:255 +msgid "Invalid File" +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:290 +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:8 +msgid "Please wait for files..." +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:296 +msgid "Unable to download files for this magnet" +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:694 +msgid "Choose a .torrent file" +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:777 +msgid "Invalid URL" +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:778 +msgid "is not a valid URL." +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:784 +msgid "Downloading..." +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:819 +msgid "Download Failed" +msgstr "" + +#: deluge/ui/gtk3/addtorrentdialog.py:820 +msgid "Failed to download:" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:110 +msgid "_No" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:110 +msgid "_Yes" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:132 deluge/ui/gtk3/dialogs.py:156 +#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:2 +#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:2 +#: deluge/ui/gtk3/glade/connection_manager.ui.h:2 +msgid "_Close" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:179 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:195 +#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:38 +msgid "Details:" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:200 +msgid "Authenticate" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:203 deluge/ui/gtk3/connectionmanager.py:211 +#: deluge/ui/gtk3/glade/connection_manager.ui.h:3 +msgid "C_onnect" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:209 deluge/ui/gtk3/dialogs.py:281 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:139 +#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:6 +#: deluge/ui/console/modes/connectionmanager.py:123 +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:7 +#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:65 +#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:65 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:74 +msgid "Username:" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:217 deluge/ui/gtk3/dialogs.py:310 +#: deluge/ui/gtk3/dialogs.py:437 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:43 +#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:7 +#: deluge/ui/console/modes/connectionmanager.py:124 +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:8 +#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:72 +#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:72 +#: deluge/ui/web/js/deluge-all/LoginWindow.js:47 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:83 +msgid "Password:" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:257 +msgid "Edit Account" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:258 +msgid "Edit existing account" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:263 deluge/ui/gtk3/dialogs.py:364 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:16 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:38 +msgid "_Apply" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:270 +msgid "New Account" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:271 +msgid "Create a new account" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:273 deluge/ui/gtk3/glade/queuedtorrents.ui.h:3 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:191 +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:3 +#: deluge/ui/gtk3/glade/edit_trackers.ui.h:5 +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:20 +#: deluge/ui/gtk3/glade/connection_manager.ui.h:4 +msgid "_Add" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:289 +msgid "Authentication Level:" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:423 +msgid "Password Protected" +msgstr "" + +#: deluge/ui/gtk3/dialogs.py:429 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:17 +#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:3 +#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:3 +#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:3 +#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:3 +#: deluge/ui/gtk3/glade/edit_trackers.ui.h:3 +#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:3 +#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:3 +#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:3 +#: deluge/ui/gtk3/glade/other_dialog.ui.h:2 +#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:3 +#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:3 +msgid "_OK" +msgstr "" + +#: deluge/ui/gtk3/common.py:155 deluge/ui/gtk3/menubar.py:83 +msgid "Other..." +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18 +msgid "Not Connected" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:175 +msgid "Connections (Limit)" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:182 +msgid "Download Speed (Limit)" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:189 +msgid "Upload Speed (Limit)" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:196 +msgid "Protocol Traffic (Down:Up)" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234 +msgid "DHT Nodes" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:207 +msgid "Free Disk Space" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:212 deluge/ui/web/js/deluge-all/Statusbar.js:226 +msgid "External IP Address" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409 +#, python-format +msgid "<b>IP</b> <small>%s</small>" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408 +#: deluge/ui/console/widgets/statusbars.py:121 +#: deluge/ui/web/js/deluge-all/Statusbar.js:358 +msgid "n/a" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:220 +msgid "<b><small>Port Issue</small></b>" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:222 +msgid "No incoming connections, check port forwarding" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394 +#: deluge/ui/gtk3/menubar.py:447 +msgid "Download Speed Limit" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:476 deluge/ui/gtk3/systemtray.py:395 +#: deluge/ui/gtk3/menubar.py:448 +msgid "Set the maximum download speed" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:482 deluge/ui/gtk3/systemtray.py:409 +#: deluge/ui/gtk3/menubar.py:453 +msgid "Upload Speed Limit" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410 +#: deluge/ui/gtk3/menubar.py:454 +msgid "Set the maximum upload speed" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459 +msgid "Incoming Connections" +msgstr "" + +#: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460 +msgid "Set the maximum incoming connections" +msgstr "" + +#: deluge/ui/gtk3/tab_data_funcs.py:28 +#, python-brace-format +msgid "{state} {percent}%" +msgstr "" + +#: deluge/ui/gtk3/tab_data_funcs.py:30 +#, python-brace-format +msgid "{state}: {err_msg}" +msgstr "" + +#: deluge/ui/gtk3/tab_data_funcs.py:42 +#: deluge/ui/gtk3/torrentview_data_funcs.py:284 +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:74 +msgid "Never" +msgstr "" + +#: deluge/ui/gtk3/tab_data_funcs.py:96 +msgid "Yes" +msgstr "" + +#: deluge/ui/gtk3/tab_data_funcs.py:96 +msgid "No" +msgstr "" + +#: deluge/ui/gtk3/files_tab.py:140 +#: deluge/ui/web/js/deluge-all/details/FilesTab.js:48 +msgid "Priority" +msgstr "" + +#: deluge/ui/gtk3/torrentdetails.py:142 +msgid "_All" +msgstr "" + +#: deluge/ui/gtk3/torrentdetails.py:143 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:15 +msgid "_Status" +msgstr "" + +#: deluge/ui/gtk3/torrentdetails.py:144 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:26 +msgid "_Details" +msgstr "" + +#: deluge/ui/gtk3/torrentdetails.py:145 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27 +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9 +msgid "Fi_les" +msgstr "" + +#: deluge/ui/gtk3/torrentdetails.py:146 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28 +msgid "_Peers" +msgstr "" + +#: deluge/ui/gtk3/torrentdetails.py:147 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45 +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:36 +msgid "_Options" +msgstr "" + +#: deluge/ui/gtk3/torrentdetails.py:148 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52 +msgid "_Trackers" +msgstr "" + +#: deluge/ui/gtk3/systemtray.py:184 +msgid "Not Connected..." +msgstr "" + +#: deluge/ui/gtk3/systemtray.py:235 deluge/ui/gtk3/systemtray.py:239 +#: deluge/ui/web/js/deluge-all/Statusbar.js:73 +#: deluge/ui/web/js/deluge-all/Statusbar.js:132 +#: deluge/ui/web/js/deluge-all/Statusbar.js:191 +#: deluge/ui/web/js/deluge-all/Menus.js:109 +#: deluge/ui/web/js/deluge-all/Menus.js:154 +#: deluge/ui/web/js/deluge-all/Menus.js:199 +#: deluge/ui/web/js/deluge-all/Menus.js:244 +msgid "Unlimited" +msgstr "" + +#: deluge/ui/gtk3/systemtray.py:245 +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:39 +#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:3 +#: deluge/ui/web/js/deluge-all/Toolbar.js:77 +#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:85 +#: deluge/ui/web/js/deluge-all/Menus.js:298 +msgid "Down" +msgstr "" + +#: deluge/ui/gtk3/systemtray.py:248 +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:37 +#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:2 +#: deluge/ui/web/js/deluge-all/FileBrowser.js:33 +#: deluge/ui/web/js/deluge-all/Toolbar.js:70 +#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:79 +#: deluge/ui/web/js/deluge-all/Menus.js:291 +msgid "Up" +msgstr "" + +#: deluge/ui/gtk3/gtkui.py:313 +msgid "" +"A Deluge daemon (deluged) is already running.\n" +"To use Standalone mode, stop local daemon and restart Deluge." +msgstr "" + +#: deluge/ui/gtk3/gtkui.py:319 +msgid "" +"Only Thin Client mode is available because libtorrent is not installed.\n" +"To use Standalone mode, please install libtorrent package." +msgstr "" + +#: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331 +msgid "" +"Only Thin Client mode is available due to unknown Import Error.\n" +"To use Standalone mode, please see logs for error details." +msgstr "" + +#: deluge/ui/gtk3/gtkui.py:349 +msgid "Continue in Thin Client mode?" +msgstr "" + +#: deluge/ui/gtk3/gtkui.py:350 +msgid "Change User Interface Mode" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:52 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:56 +msgid "Offline" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:53 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:53 +msgid "Online" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:54 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:59 +msgid "Connected" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:110 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:48 +#: deluge/ui/web/js/deluge-all/details/StatusTab.js:17 +msgid "Status" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:115 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:66 +msgid "Host" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:122 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:73 +msgid "Version" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:219 +#: deluge/ui/gtk3/glade/connection_manager.ui.h:8 +msgid "_Start Daemon" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:250 +msgid "_Stop Daemon" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:255 +msgid "_Disconnect" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:280 +msgid "Unable to start daemon!" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:281 +msgid "Check deluged package is installed and logs for further details" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:332 +msgid "Incompatible Client" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:343 +msgid "" +"Auto-starting the daemon locally is not enabled. See \"Options\" on the " +"\"Connection Manager\"." +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:346 +msgid "Failed To Connect" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:403 +msgid "Edit Host" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:428 +msgid "Error Adding Host" +msgstr "" + +#: deluge/ui/gtk3/connectionmanager.py:464 +msgid "Error Updating Host" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:131 +#: deluge/ui/console/cmdline/commands/connect.py:33 +#: deluge/ui/console/modes/preferences/preference_panes.py:651 +msgid "Username" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:135 +#: deluge/ui/console/modes/preferences/preference_panes.py:399 +msgid "Level" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:159 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:2 +#: deluge/ui/console/modes/preferences/preference_panes.py:383 +#: deluge/ui/console/modes/preferences/preference_panes.py:392 +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:12 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:46 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:67 +#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:71 +msgid "Enabled" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:162 +#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:87 +msgid "Plugin" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886 +msgid "Attention" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:876 +msgid "You must choose a language" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:887 +msgid "You must now restart the deluge UI for the changes to take effect." +msgstr "" + +#: deluge/ui/gtk3/preferences.py:940 +msgid "Thinclient" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:940 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18 +msgid "Standalone" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:942 +msgid "Switching Deluge Client Mode..." +msgstr "" + +#: deluge/ui/gtk3/preferences.py:943 +#, python-format +msgid "Do you want to restart to use %s mode?" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1154 +msgid "Select the Plugin" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1170 +msgid "Plugin Eggs" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1297 +msgid "Server Side Error" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1298 +msgid "An error occurred on the server" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375 +msgid "Error Adding Account" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1369 +msgid "Authentication failed" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1376 +msgid "An error occurred while adding account" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1408 +msgid "Error Updating Account" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1409 +msgid "An error occurred while updating account" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1427 +msgid "Remove Account" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1429 +#, python-format +msgid "" +"Are you sure you want to remove the account with the username " +"\"%(username)s\"?" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448 +msgid "Error Removing Account" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1442 +msgid "Auhentication failed" +msgstr "" + +#: deluge/ui/gtk3/preferences.py:1449 +msgid "An error occurred while removing account" +msgstr "" + +#: deluge/ui/gtk3/filtertreeview.py:122 +#: deluge/ui/web/js/deluge-all/FilterPanel.js:28 +msgid "States" +msgstr "" + +#: deluge/ui/gtk3/filtertreeview.py:128 +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:23 +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:21 +#: deluge/ui/web/js/deluge-all/FilterPanel.js:30 +msgid "Trackers" +msgstr "" + +#: deluge/ui/gtk3/filtertreeview.py:132 deluge/ui/gtk3/filtertreeview.py:138 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33 +msgid "None" +msgstr "" + +#: deluge/ui/gtk3/filtertreeview.py:137 +msgid "Admin" +msgstr "" + +#: deluge/ui/gtk3/filtertreeview.py:159 +#: deluge/ui/web/js/deluge-all/FilterPanel.js:34 +msgid "Labels" +msgstr "" + +#: deluge/ui/gtk3/filtertreeview.py:204 +#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:28 +msgid "No Label" +msgstr "" + +#: deluge/ui/gtk3/filtertreeview.py:206 +msgid "No Owner" +msgstr "" + +#: deluge/ui/gtk3/new_release_dialog.py:60 +msgid "<i>Client Version</i>" +msgstr "" + +#: deluge/ui/gtk3/queuedtorrents.py:118 +msgid " Torrents Queued" +msgstr "" + +#: deluge/ui/gtk3/queuedtorrents.py:120 +msgid " Torrent Queued" +msgstr "" + +#: deluge/ui/gtk3/torrentview.py:421 +msgid "Torrent is shared between other Deluge users or not." +msgstr "" + +#: deluge/ui/gtk3/removetorrentdialog.py:67 +msgid "Remove the selected torrents?" +msgstr "" + +#: deluge/ui/gtk3/removetorrentdialog.py:68 +#, python-format +msgid "Total of %s torrents selected" +msgstr "" + +#: deluge/ui/gtk3/menubar.py:79 +msgid "Set Unlimited" +msgstr "" + +#: deluge/ui/gtk3/menubar.py:91 deluge/ui/web/js/deluge-all/Menus.js:259 +msgid "On" +msgstr "" + +#: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265 +msgid "Off" +msgstr "" + +#: deluge/ui/gtk3/menubar.py:101 +msgid "Disable" +msgstr "" + +#: deluge/ui/gtk3/menubar.py:104 +msgid "Enable..." +msgstr "" + +#: deluge/ui/gtk3/menubar.py:465 +msgid "Peer Upload Slots" +msgstr "" + +#: deluge/ui/gtk3/menubar.py:466 +msgid "Set the maximum upload slots" +msgstr "" + +#: deluge/ui/gtk3/menubar.py:471 +msgid "Stop Seed At Ratio" +msgstr "" + +#: deluge/ui/gtk3/menubar.py:606 +msgid "Ownership Change Error" +msgstr "" + +#: deluge/ui/gtk3/menubar.py:607 +msgid "There was an error while trying changing ownership." +msgstr "" + +#: deluge/ui/gtk3/peers_tab.py:91 +#: deluge/ui/web/js/deluge-all/details/PeersTab.js:66 +msgid "Address" +msgstr "" + +#: deluge/ui/gtk3/peers_tab.py:107 +#: deluge/ui/web/js/deluge-all/details/PeersTab.js:73 +msgid "Client" +msgstr "" + +#: deluge/ui/gtk3/__init__.py:29 +msgid "GTK Options" +msgstr "" + +#: deluge/ui/gtk3/__init__.py:36 +msgid "" +"Add one or more torrent files, torrent URLs or magnet URIs to a currently " +"running Deluge GTK instance" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1 +msgid "Creating Torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:1 +msgid "Queued Torrents" +msgstr "" + +#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4 +msgid "Add Queued Torrents" +msgstr "" + +#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5 +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7 +#: deluge/ui/gtk3/glade/edit_trackers.ui.h:7 +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:21 +#: deluge/ui/gtk3/glade/connection_manager.ui.h:6 +msgid "_Remove" +msgstr "" + +#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6 +msgid "_Clear" +msgstr "" + +#: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7 +msgid "Automatically add torrents on connect" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:1 +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:4 +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:12 +msgid "_File" +msgstr "_Фишиер" + +#: deluge/ui/gtk3/glade/main_window.ui.h:2 +#: deluge/ui/gtk3/glade/tray_menu.ui.h:2 +msgid "_Add Torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:3 +msgid "_Create Torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:4 +msgid "Quit & _Shutdown Daemon" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:5 +#: deluge/ui/gtk3/glade/tray_menu.ui.h:8 +msgid "_Quit" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:6 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:192 +#: deluge/ui/gtk3/glade/edit_trackers.ui.h:6 +#: deluge/ui/gtk3/glade/connection_manager.ui.h:5 +msgid "_Edit" +msgstr "_Редактаре" + +#: deluge/ui/gtk3/glade/main_window.ui.h:7 +msgid "_Preferences" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:8 +msgid "_Connection Manager" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:9 +msgid "_Torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:10 +msgid "_View" +msgstr "_Аспект" + +#: deluge/ui/gtk3/glade/main_window.ui.h:11 +msgid "_Toolbar" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:12 +msgid "_Sidebar" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:13 +msgid "Status_bar" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:14 +msgid "T_abs" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:15 +msgid "_Columns" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:16 +msgid "_Find ..." +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:17 +msgid "S_idebar" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:18 +msgid "Show _Zero Hits" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:19 +msgid "Show _Trackers" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:20 +msgid "Show _Owners" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:21 +msgid "_Help" +msgstr "_Информацие" + +#: deluge/ui/gtk3/glade/main_window.ui.h:22 +msgid "_Homepage" +msgstr "_Паӂинэ де интернет" + +#: deluge/ui/gtk3/glade/main_window.ui.h:23 +msgid "_FAQ" +msgstr "_Ынтребэрь фреквенте" + +#: deluge/ui/gtk3/glade/main_window.ui.h:24 +msgid "Frequently Asked Questions" +msgstr "Ынтребэрь фреквенте" + +#: deluge/ui/gtk3/glade/main_window.ui.h:25 +msgid "_Community" +msgstr "_Комунитате" + +#: deluge/ui/gtk3/glade/main_window.ui.h:26 +msgid "_About" +msgstr "_Деспре програм" + +#: deluge/ui/gtk3/glade/main_window.ui.h:27 +msgid "Add torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:28 +msgid "Add Torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:29 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:221 +msgid "Remove torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:30 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:105 +#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:1 +#: deluge/ui/web/js/deluge-all/RemoveWindow.js:16 +#: deluge/ui/web/js/deluge-all/RemoveWindow.js:34 +#: deluge/ui/web/js/deluge-all/Menus.js:331 +msgid "Remove Torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:31 +msgid "" +"Filter torrents by name.\n" +"This will filter torrents for the current selection on the sidebar." +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:33 +msgid "Filter" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:34 +msgid "Pause the selected torrents" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:35 +#: deluge/ui/web/js/deluge-all/Toolbar.js:54 +#: deluge/ui/web/js/deluge-all/Menus.js:52 +msgid "Pause" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:36 +msgid "Resume the selected torrents" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:37 +#: deluge/ui/web/js/deluge-all/Toolbar.js:61 +#: deluge/ui/web/js/deluge-all/Menus.js:59 +msgid "Resume" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:38 +msgid "Queue Torrent Up" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:39 +msgid "Queue Up" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:40 +msgid "Queue Torrent Down" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:41 +msgid "Queue Down" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:42 +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14 +#: deluge/ui/web/js/deluge-all/Toolbar.js:84 +#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:24 +msgid "Preferences" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:43 +#: deluge/ui/gtk3/glade/connection_manager.ui.h:1 +#: deluge/ui/web/js/deluge-all/Toolbar.js:91 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:21 +msgid "Connection Manager" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:44 +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:2 +#: deluge/ui/web/js/deluge-all/AboutWindow.js:111 +#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:32 +#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:32 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:32 +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211 +#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86 +msgid "Close" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:45 +msgid "Filter:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:46 +msgid "Clear the search" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.ui.h:47 +msgid "_Match Case" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1 +#: deluge/ui/console/modes/preferences/preference_panes.py:383 +#: deluge/ui/console/modes/preferences/preference_panes.py:392 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66 +msgid "Forced" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3 +#: deluge/ui/console/modes/preferences/preference_panes.py:383 +#: deluge/ui/console/modes/preferences/preference_panes.py:392 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68 +msgid "Disabled" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4 +#: deluge/ui/console/modes/preferences/preference_panes.py:400 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:87 +msgid "Handshake" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:5 +#: deluge/ui/console/modes/preferences/preference_panes.py:400 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88 +msgid "Full Stream" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6 +#: deluge/ui/console/modes/preferences/preference_panes.py:400 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:89 +msgid "Either" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34 +msgid "Socks4" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35 +msgid "Socks5" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:10 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:36 +msgid "Socks5 Auth" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37 +msgid "HTTP" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:12 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:38 +msgid "HTTP Auth" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39 +msgid "I2P" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19 +msgid "The standalone self-contained application" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20 +msgid "Thin Client" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21 +msgid "Connect to a Deluge daemon (deluged)" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22 +msgid "Application Mode" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23 +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46 +msgid "Show session speed in titlebar" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:24 +msgid "Focus window when adding torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:25 +msgid "" +"The pieces bar\n" +"will increase bandwidth use between client\n" +"and daemon (does not apply in Standalone mode)." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28 +msgid "Show a pieces bar in Status tab" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25 +#: deluge/ui/web/render/tab_status.html:27 +msgid "Completed:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72 +msgid "Downloading:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31 +msgid "Waiting:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32 +msgid "Missing:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33 +msgid "_Revert" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34 +msgid "Revert color to default" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35 +msgid "Piece Colors" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36 +msgid "Main Window" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37 +msgid "Enable system tray icon" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38 +msgid "App Indicator" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39 +msgid "Systray" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40 +msgid "Minimize to tray on close" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:41 +msgid "Start in tray" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:42 +msgid "Password protect system tray" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44 +msgid "System Tray" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45 +msgid "Notify about new releases" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46 +#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38 +msgid "Updates" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47 +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235 +msgid "System Default" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48 +msgid "<b>Language</b>" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49 +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16 +#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:61 +msgid "Move completed to:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:50 +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:15 +#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:70 +msgid "Copy of .torrent files to:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:51 +#: deluge/ui/console/modes/preferences/preference_panes.py:275 +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:19 +msgid "Delete copy of torrent file on remove" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:52 +msgid "" +"Delete the copy of the torrent file created when the torrent is removed" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:53 +#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:53 +msgid "Download to:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54 +msgid "Download Folders" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55 +#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93 +msgid "Prioritize first and last pieces of torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:56 +msgid "Prioritize first and last pieces of files in torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:57 +#: deluge/ui/console/modes/preferences/preference_panes.py:287 +#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102 +msgid "Sequential download" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58 +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15 +msgid "" +"When enabled, the piece picker will pick pieces in\n" +"sequence instead of rarest first.\n" +"\n" +"Enabling sequential download will affect the piece\n" +"distribution negatively in the swarm. It should be\n" +"used sparingly." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64 +#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111 +msgid "Add torrents in Paused state" +msgstr "" + +#: 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 "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66 +msgid "Pre-allocate the disk space for the torrent files" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67 +msgid "Add Torrent Options" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68 +msgid "Always show" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:69 +msgid "Bring the dialog to focus" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70 +msgid "Add Torrents Dialog" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71 +msgid "Connection Attempts per Second:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72 +msgid "Half-Open Connections:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73 +msgid "The maximum number of connections allowed. Set -1 for unlimited." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42 +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:30 +#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:8 +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:8 +msgid "Connections:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75 +msgid "The maximum upload slots for all torrents. Set -1 for unlimited." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43 +#: 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 "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:77 +msgid "The maximum download speed for all torrents. Set -1 for unlimited." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:78 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:41 +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:7 +msgid "Download Speed:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79 +msgid "The maximum upload speed for all torrents. Set -1 for unlimited." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39 +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6 +msgid "Upload Speed:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82 +#: deluge/ui/console/modes/preferences/preference_panes.py:458 +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:131 +msgid "Ignore limits on local network" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:83 +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:141 +msgid "Rate limit IP overhead" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:84 +msgid "" +"If checked, the estimated TCP/IP overhead is drained from the rate limiters, " +"to avoid exceeding the limits with the total traffic" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85 +msgid "Global Bandwidth Limits" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86 +msgid "The maximum upload slots per torrent. Set -1 for unlimited." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87 +msgid "The maximum number of connections per torrent. Set -1 for unlimited." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88 +msgid "The maximum number download speed per torrent. Set -1 for unlimited." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89 +msgid "The maximum upload speed per torrent. Set -1 for unlimited." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90 +msgid "Per-Torrent Bandwidth Limits" +msgstr "" + +#: 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 "" + +#: 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 "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85 +msgid "Seeding:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59 +msgid "Total:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102 +msgid "Ignore slow torrents" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96 +msgid "" +"Torrents not transfering any data do not count towards download/seeding " +"active count." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111 +msgid "Prefer seeding torrents" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98 +msgid "Give preference to seeding torrents over downloading torrents." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99 +#: deluge/ui/console/modes/preferences/preference_panes.py:558 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50 +msgid "Active Torrents" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100 +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:127 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:187 +#: deluge/ui/web/render/tab_status.html:4 +msgid "Share Ratio:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:101 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:142 +msgid "Time Ratio:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:102 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:157 +msgid "Time (m):" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103 +#: deluge/ui/console/modes/preferences/preference_panes.py:590 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:118 +msgid "Seeding Rotation" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:104 +msgid "Pause Torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106 +#: deluge/ui/console/modes/preferences/preference_panes.py:627 +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:173 +msgid "Share Ratio Reached" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:107 +msgid "" +"The IP address of the interface to listen for incoming bittorrent " +"connections on. Leave this empty if you want to use the default." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38 +msgid "Incoming Address" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109 +msgid "Random" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110 +msgid "Uses random ports in range 49152 to 65525" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111 +msgid "Active Port:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:112 +msgid "Test Active Port" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58 +msgid "Incoming Port" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114 +msgid "" +"\n" +"The network interface name or IP address for outgoing BitTorrent " +"connections. (Leave empty for default.)\n" +" " +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117 +#: deluge/ui/console/modes/preferences/preference_panes.py:359 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101 +msgid "Outgoing Interface" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118 +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:155 +msgid "From:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:119 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:165 +msgid "To:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:120 +#: deluge/ui/console/modes/preferences/preference_panes.py:328 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120 +msgid "Outgoing Ports" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59 +msgid "Outgoing:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38 +msgid "Incoming:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80 +msgid "Level:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:124 +#: deluge/ui/console/modes/preferences/preference_panes.py:379 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:18 +msgid "Encryption" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:125 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:194 +msgid "UPnP" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:126 +msgid "Universal Plug and Play" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:127 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:203 +msgid "NAT-PMP" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:128 +msgid "NAT Port Mapping Protocol" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:129 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:213 +msgid "Peer Exchange" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130 +msgid "Exchanges peers between clients. (Disabling requires restart)" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223 +msgid "LSD" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132 +msgid "Local Service Discovery finds local peers on your network." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133 +#: deluge/ui/console/widgets/statusbars.py:118 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:232 +msgid "DHT" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:134 +msgid "Distributed hash table may improve the amount of active connections." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:135 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:251 +msgid "Peer TOS Byte:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:136 +#: deluge/ui/console/modes/preferences/preference_panes.py:372 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181 +msgid "Network Extras" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137 +#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4 +#: deluge/ui/console/modes/connectionmanager.py:121 +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:5 +msgid "Hostname:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:138 +#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:5 +#: deluge/ui/console/modes/connectionmanager.py:122 +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:6 +#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:52 +#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:52 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:62 +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:150 +msgid "Port:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:140 +#: deluge/ui/console/modes/preferences/preference_panes.py:658 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94 +msgid "Proxy Hostnames" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141 +msgid "" +"Hostnames should be attempted to be resolved through\n" +"the proxy instead of using the local DNS service" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143 +#: deluge/ui/console/modes/preferences/preference_panes.py:661 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103 +msgid "Proxy Peers" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144 +msgid "Proxy peer and web seed connections." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145 +#: deluge/ui/console/modes/preferences/preference_panes.py:665 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112 +msgid "Proxy Trackers" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147 +msgid "Force Proxy Use" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148 +#: deluge/ui/console/modes/preferences/preference_panes.py:671 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:141 +msgid "Hide Client Identity" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:149 +msgid "" +"Attempt to hide client identity and only use proxy for incoming connections." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150 +#: deluge/ui/console/modes/preferences/preference_panes.py:668 +#: deluge/ui/console/modes/preferences/preference_panes.py:669 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120 +msgid "Force Proxy" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151 +msgid "Cache Size (16 KiB blocks):" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152 +msgid "" +"The number of seconds from the last cached write to a piece in the write " +"cache, to when it's forcefully flushed to disk. Default is 60 seconds." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:153 +#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:53 +msgid "Cache Expiry (seconds):" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:154 +#: deluge/ui/console/modes/preferences/preference_panes.py:694 +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:14 +#: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:29 +#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:30 +msgid "Settings" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:155 +msgid "" +"The total number of 16 KiB blocks written to disk since this session was " +"started." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156 +msgid "Blocks Written:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:157 +msgid "" +"The total number of write operations performed since this session was " +"started." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158 +msgid "Writes:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:159 +msgid "" +"The ratio (blocks_written - writes) / blocks_written represents the number " +"of saved write operations per total write operations, i.e. a kind of cache " +"hit ratio for the write cache." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160 +msgid "Write Cache Hit Ratio:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161 +#: deluge/ui/console/modes/preferences/preference_panes.py:709 +msgid "Write" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162 +msgid "" +"The number of blocks that were requested from the bittorrent engine (from " +"peers), that were served from disk or cache." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163 +msgid "Blocks Read:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:164 +msgid "The number of blocks that were served from cache." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:165 +msgid "Blocks Read Hit:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:166 +msgid "The cache hit ratio for the read cache." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167 +msgid "Read Cache Hit Ratio:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168 +msgid "" +"The total number of read operations performed since this session was started." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169 +msgid "Reads:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170 +#: deluge/ui/console/modes/preferences/preference_panes.py:723 +msgid "Read" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171 +msgid "" +"The number of 16 KiB blocks currently in the disk cache. This includes both " +"read and write cache." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172 +msgid "Cache Size:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:173 +msgid "Read Cache Size:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175 +#: deluge/ui/gtk3/glade/connection_manager.ui.h:7 +msgid "_Refresh" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177 +msgid "" +"Help us improve Deluge by sending us your Python version, PyGTK version, OS " +"and processor types. Absolutely no other information is sent." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178 +#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77 +msgid "Yes, please send anonymous statistics" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:179 +#: deluge/ui/console/modes/preferences/preference_panes.py:503 +#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57 +msgid "System Information" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180 +msgid "Location:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:181 +msgid "" +"If Deluge cannot find the database file at this location it will fallback to " +"using DNS to resolve the peer's country." +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:182 +#: deluge/ui/console/modes/preferences/preference_panes.py:516 +#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85 +msgid "GeoIP Database" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183 +msgid "Associate with Deluge" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184 +msgid "Magnet Links" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185 +#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37 +msgid "Daemon port:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:186 +#: deluge/ui/console/modes/preferences/preference_panes.py:655 +#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:30 +msgid "Port" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:187 +#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:61 +msgid "Allow Remote Connections" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:188 +#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:4 +#: deluge/ui/web/js/deluge-all/Statusbar.js:39 +#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:50 +msgid "Connections" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:189 +#: deluge/ui/console/modes/preferences/preference_panes.py:543 +#: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:80 +msgid "Periodically check the website for new releases" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193 +msgid "_Delete" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194 +msgid "Accounts" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196 +#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29 +msgid "Version:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:197 +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:16 +#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:26 +msgid "Author:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:198 +#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:35 +msgid "Homepage:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:199 +#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:32 +msgid "Author Email:" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:200 +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:18 +msgid "Info" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201 +msgid "_Install" +msgstr "" + +#: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202 +msgid "_Find More..." +msgstr "" + +#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4 +msgid "Remove the selected torrent(s)?" +msgstr "" + +#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5 +msgid "Include downloaded files" +msgstr "" + +#: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:6 +msgid "(This is permanent!)" +msgstr "" + +#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:1 +msgid "Add Peer" +msgstr "" + +#: deluge/ui/gtk3/glade/connect_peer_dialog.ui.h:4 +msgid "hostname:port" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1 +msgid "Properties" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3 +msgid "Max drop down rows" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4 +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2 +#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:5 +msgid "<b>General</b>" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:5 +msgid "Show path entry" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:6 +msgid "Show file chooser" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7 +msgid "Show folder name" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:8 +msgid "Path Chooser Type" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:9 +msgid "Enable autocomplete" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10 +msgid "Show hidden files" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11 +msgid "Set new key" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12 +msgid "Press this key to set new key accelerators to trigger auto-complete" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13 +msgid "Autocomplete" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14 +msgid "Save path" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15 +msgid "Ctrl+S" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16 +msgid "Ctrl+E" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17 +msgid "Ctrl+R" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18 +msgid "Ctrl+H" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19 +msgid "Ctrl+D" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22 +msgid "Toggle hidden files" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23 +msgid "Default path" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24 +msgid "Shortcuts" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25 +msgid "Select a Directory" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26 +msgid "Saved paths" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27 +msgid "column" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29 +#: deluge/ui/console/modes/preferences/preferences.py:145 +#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:42 +#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:33 +#: deluge/ui/web/js/deluge-all/RemoveWindow.js:32 +#: deluge/ui/web/js/deluge-all/MoveStorage.js:36 +#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:34 +#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:51 +#: deluge/ui/web/js/deluge-all/add/AddWindow.js:64 +msgid "Cancel" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30 +msgid "Open" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31 +#: deluge/ui/web/js/deluge-all/Toolbar.js:39 +#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:43 +#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:33 +#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:92 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:94 +#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:27 +#: deluge/ui/web/js/deluge-all/add/AddWindow.js:65 +msgid "Add" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32 +msgid "Add the current entry value to the list" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33 +#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98 +#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:102 +msgid "Edit" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34 +msgid "Edit the selected entry" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35 +#: deluge/ui/web/js/deluge-all/Toolbar.js:46 +#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:104 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:110 +#: deluge/ui/web/js/deluge-all/add/AddWindow.js:156 +msgid "Remove" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36 +msgid "Remove the selected entry" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38 +msgid "Move the selected entry up" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40 +msgid "Move the selected entry down" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41 +msgid "Default" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42 +msgid "No default path set" +msgstr "" + +#: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43 +msgid "Open properties dialog" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1 +msgid "Add Infohash" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:4 +msgid "From Infohash" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:5 +msgid "Infohash:" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:6 +#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:5 +#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:53 +msgid "Trackers:" +msgstr "" + +#: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1 +#: deluge/ui/console/modes/connectionmanager.py:51 +msgid "Add Host" +msgstr "" + +#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1 +#: deluge/ui/web/js/deluge-all/MoveStorage.js:16 +#: deluge/ui/web/js/deluge-all/Menus.js:346 +msgid "Move Download Folder" +msgstr "" + +#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4 +msgid "Move the torrent(s) download folder." +msgstr "" + +#: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5 +msgid "Destination:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:1 +msgid "New Release" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:3 +msgid "_Goto Website" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4 +msgid "New Release Available!" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5 +msgid "Available Version:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6 +msgid "Server Version" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7 +msgid "Current Version:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8 +msgid "Do not show this dialog in the future" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:1 +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26 +#: deluge/ui/web/render/tab_status.html:9 +msgid "Down Speed:" +msgstr "" + +#: 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 "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3 +#: deluge/ui/web/render/tab_status.html:2 +msgid "Downloaded:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4 +#: deluge/ui/web/render/tab_status.html:3 +msgid "Uploaded:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5 +#: deluge/ui/web/render/tab_status.html:16 +msgid "Seeds:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6 +#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10 +#: deluge/ui/web/render/tab_status.html:17 +msgid "Peers:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8 +#: deluge/ui/web/render/tab_status.html:18 +msgid "Availability:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9 +#: deluge/ui/web/render/tab_status.html:25 +msgid "Seed Rank:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:10 +msgid "ETA Time:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:11 +#: deluge/ui/web/render/tab_status.html:13 +msgid "Last Transfer:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:12 +#: deluge/ui/web/render/tab_status.html:23 +msgid "Active Time:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:13 +#: deluge/ui/web/render/tab_status.html:20 +msgid "Complete Seen:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:14 +#: deluge/ui/web/render/tab_status.html:24 +msgid "Seeding Time:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16 +#: deluge/ui/web/render/tab_status.html:12 +msgid "Pieces:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17 +#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3 +#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23 +msgid "Name:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18 +#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25 +msgid "Download Folder:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19 +msgid "Added:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20 +#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26 +msgid "Total Size:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:21 +#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:27 +msgid "Total Files:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22 +#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24 +msgid "Hash:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23 +#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31 +msgid "Created By:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24 +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17 +msgid "Comments:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29 +msgid "Owner:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34 +msgid "Move completed:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:36 +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:39 +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205 +msgid "Stop seed at ratio:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37 +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40 +#: 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 "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:44 +msgid "Bandwidth Limits" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46 +msgid "Current Tracker:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47 +msgid "Total Trackers:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48 +#: deluge/ui/web/render/tab_status.html:6 +msgid "Tracker Status:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49 +#: deluge/ui/web/render/tab_status.html:5 +msgid "Next Announce:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50 +msgid "Private Torrent:" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51 +#: deluge/ui/gtk3/glade/torrent_menu.ui.h:8 +msgid "_Edit Trackers" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:1 +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44 +#: deluge/ui/web/js/deluge-all/Menus.js:284 +msgid "Top" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4 +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45 +#: deluge/ui/web/js/deluge-all/Menus.js:305 +msgid "Bottom" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1 +#: deluge/ui/web/js/deluge-all/add/AddWindow.js:50 +msgid "Add Torrents" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5 +msgid "_URL" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6 +msgid "Info_hash" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11 +msgid "Move Complete Folder" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12 +msgid "Add In _Paused State" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:13 +#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:134 +msgid "Prioritize First/Last Pieces" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:21 +#: 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 "" + +#: 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 "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24 +msgid "Preallocate the disk space for the torrent files" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25 +msgid "Maximum torrent download speed" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27 +msgid "Maximum torrent upload speed" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29 +msgid "Maximum torrent connections" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31 +msgid "Maximum torrent upload slots" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34 +msgid "Apply To All" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35 +msgid "Revert To Defaults" +msgstr "" + +#: deluge/ui/gtk3/glade/tray_menu.ui.h:1 +msgid "_Show Deluge" +msgstr "" + +#: deluge/ui/gtk3/glade/tray_menu.ui.h:3 +msgid "_Pause Session" +msgstr "" + +#: deluge/ui/gtk3/glade/tray_menu.ui.h:4 +msgid "_Resume Session" +msgstr "" + +#: deluge/ui/gtk3/glade/tray_menu.ui.h:5 +#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1 +msgid "_Download Speed Limit" +msgstr "" + +#: deluge/ui/gtk3/glade/tray_menu.ui.h:6 +#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2 +msgid "_Upload Speed Limit" +msgstr "" + +#: deluge/ui/gtk3/glade/tray_menu.ui.h:7 +msgid "Quit & Shutdown Daemon" +msgstr "" + +#: deluge/ui/gtk3/glade/edit_trackers.ui.h:1 +#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:17 +#: deluge/ui/web/js/deluge-all/Menus.js:323 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:318 +msgid "Edit Trackers" +msgstr "" + +#: deluge/ui/gtk3/glade/edit_trackers.ui.h:4 +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19 +msgid "_Up" +msgstr "" + +#: deluge/ui/gtk3/glade/edit_trackers.ui.h:8 +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22 +msgid "_Down" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1 +msgid "_Add Peer" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2 +msgid "Add a peer by its IP" +msgstr "" + +#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:1 +#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:17 +msgid "Edit Tracker" +msgstr "" + +#: deluge/ui/gtk3/glade/edit_trackers.edit.ui.h:4 +#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:44 +#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:30 +msgid "Tracker:" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:1 +msgid "Enter Remote Path" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4 +msgid "Remote Path" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5 +#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5 +#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:94 +msgid "Path:" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1 +msgid "32 KiB" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2 +msgid "64 KiB" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3 +msgid "128 KiB" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4 +msgid "256 KiB" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5 +msgid "512 KiB" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6 +msgid "1 MiB" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7 +msgid "2 MiB" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8 +msgid "4 MiB" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9 +msgid "8 MiB" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10 +msgid "16 MiB" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11 +msgid "Create Torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:13 +msgid "Fol_der" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:14 +msgid "_Remote Path" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:15 +#: deluge/ui/web/js/deluge-all/details/FilesTab.js:12 +#: deluge/ui/web/js/deluge-all/details/FilesTab.js:73 +#: deluge/ui/web/js/deluge-all/add/FilesTab.js:18 +msgid "Files" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24 +msgid "Webseeds" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25 +msgid "Piece Size:" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:26 +msgid "Set Private Flag" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27 +msgid "Add this torrent to the session" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28 +#: deluge/ui/console/modes/preferences/preference_panes.py:279 +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:48 +#: deluge/ui/web/js/deluge-all/Menus.js:66 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:26 +#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80 +#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17 +msgid "Options" +msgstr "" + +#: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1 +msgid "Save .torrent as" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.ui.h:1 +msgid "_Open Download Folder" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.ui.h:2 +msgid "_Pause" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.ui.h:3 +msgid "Resu_me" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.ui.h:4 +#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4 +msgid "Resume selected torrents." +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.ui.h:5 +msgid "Opt_ions" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.ui.h:6 +msgid "_Queue" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.ui.h:7 +msgid "_Update Tracker" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.ui.h:9 +msgid "_Remove Torrent" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.ui.h:10 +msgid "_Force Re-check" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.ui.h:11 +msgid "_Move Download Folder" +msgstr "" + +#: deluge/ui/gtk3/glade/other_dialog.ui.h:3 +msgid "label" +msgstr "" + +#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:1 +msgid "_Select All" +msgstr "" + +#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:2 +msgid "_Pause All" +msgstr "" + +#: deluge/ui/gtk3/glade/filtertree_menu.ui.h:3 +msgid "Resu_me All" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:3 +msgid "_Connection Limit" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:4 +msgid "Upload _Slot Limit" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:5 +msgid "Stop seed at _ratio" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:6 +msgid "_Auto Managed" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:7 +msgid "_Super Seeding" +msgstr "" + +#: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:8 +msgid "_Change Ownership" +msgstr "" + +#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1 +#: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26 +msgid "Add Tracker" +msgstr "" + +#: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4 +msgid "Add Trackers" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1 +msgid "Add URL" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4 +msgid "From URL" +msgstr "" + +#: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5 +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1 +msgid "URL:" +msgstr "" + +#: deluge/ui/gtk3/glade/connection_manager.ui.h:9 +msgid "Deluge Daemons" +msgstr "" + +#: deluge/ui/gtk3/glade/connection_manager.ui.h:10 +msgid "Auto-connect to selected Daemon" +msgstr "" + +#: deluge/ui/gtk3/glade/connection_manager.ui.h:11 +msgid "Auto-start localhost daemon (if required)" +msgstr "" + +#: deluge/ui/gtk3/glade/connection_manager.ui.h:12 +msgid "Hide this dialog" +msgstr "" + +#: deluge/ui/gtk3/glade/connection_manager.ui.h:13 +msgid "Startup Options" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1 +msgid "_Open File" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2 +msgid "_Show Folder" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3 +msgid "_Expand All" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4 +msgid "_Skip" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5 +msgid "_Low" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6 +msgid "_Normal" +msgstr "" + +#: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7 +msgid "_High" +msgstr "" + +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 +msgid "Deluge Team" +msgstr "" + +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 +msgid "" +"Deluge is a lightweight, Free Software, cross-platform BitTorrent client." +msgstr "" + +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 +msgid "" +"Deluge contains the common features to BitTorrent clients such as Protocol " +"Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" +"PMP, Proxy support, Web seeds, global and per-torrent speed limits. As " +"Deluge heavily utilises the libtorrent library it has a comprehensive list " +"of the features provided." +msgstr "" + +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 +msgid "" +"Deluge has been designed to run as both a normal standalone desktop " +"application and as a client-server. In Thinclient mode a Deluge daemon " +"handles all the BitTorrent activity and is able to run on headless machines " +"with the user-interfaces connecting remotely from any other platform." +msgstr "" + +#: deluge/ui/data/share/applications/deluge.desktop.in.h:2 +msgid "BitTorrent Client" +msgstr "" + +#: deluge/ui/data/share/applications/deluge.desktop.in.h:3 +msgid "Deluge BitTorrent Client" +msgstr "" + +#: deluge/ui/data/share/applications/deluge.desktop.in.h:4 +msgid "Download and share files over BitTorrent" +msgstr "" + +#: deluge/ui/console/console.py:76 +msgid "Console Options" +msgstr "" + +#: deluge/ui/console/console.py:78 +msgid "" +"These daemon connect options will be used for commands, or if console ui " +"autoconnect is enabled." +msgstr "" + +#: deluge/ui/console/console.py:87 +msgid "Deluge daemon IP address to connect to (default 127.0.0.1)" +msgstr "" + +#: deluge/ui/console/console.py:96 +msgid "Deluge daemon port to connect to (default 58846)" +msgstr "" + +#: deluge/ui/console/console.py:104 +msgid "Deluge daemon username to use when connecting" +msgstr "" + +#: deluge/ui/console/console.py:111 +msgid "Deluge daemon password to use when connecting" +msgstr "" + +#: deluge/ui/console/console.py:131 +msgid "Console Commands" +msgstr "" + +#: deluge/ui/console/console.py:132 +msgid "Description" +msgstr "" + +#: deluge/ui/console/console.py:133 +msgid "The following console commands are available:" +msgstr "" + +#: deluge/ui/console/console.py:134 +#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2 +msgid "Command" +msgstr "" + +#: deluge/ui/console/cmdline/command.py:208 +#, python-format +msgid "`%s` alias" +msgstr "" + +#: deluge/ui/console/cmdline/commands/manage.py:29 +msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]" +msgstr "" + +#: deluge/ui/console/cmdline/commands/manage.py:35 +msgid "an expression matched against torrent ids and torrent names" +msgstr "" + +#: deluge/ui/console/cmdline/commands/manage.py:43 +#: deluge/ui/console/cmdline/commands/config.py:88 +msgid "set value for this key" +msgstr "" + +#: deluge/ui/console/cmdline/commands/manage.py:46 +#: deluge/ui/console/cmdline/commands/config.py:91 +msgid "Value to set" +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 "" + +#: deluge/ui/console/cmdline/commands/rm.py:33 +msgid "Also removes the torrent data" +msgstr "" + +#: deluge/ui/console/cmdline/commands/rm.py:40 +msgid "List the matching torrents without removing." +msgstr "" + +#: deluge/ui/console/cmdline/commands/rm.py:46 +#: deluge/ui/console/cmdline/commands/recheck.py:28 +#: deluge/ui/console/cmdline/commands/move.py:31 +msgid "One or more torrent ids" +msgstr "" + +#: deluge/ui/console/cmdline/commands/rm.py:66 +#, python-format +msgid "Confirm with -c to remove the listed torrents (Count: %d)" +msgstr "" + +#: deluge/ui/console/cmdline/commands/resume.py:22 +msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]" +msgstr "" + +#: 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" +msgstr "" + +#: deluge/ui/console/cmdline/commands/add.py:44 +msgid "Move the completed torrent to this folder" +msgstr "" + +#: deluge/ui/console/cmdline/commands/add.py:50 +msgid "One or more torrent files, URLs or magnet URIs" +msgstr "" + +#: deluge/ui/console/cmdline/commands/plugin.py:29 +msgid "Lists available plugins" +msgstr "" + +#: deluge/ui/console/cmdline/commands/plugin.py:37 +msgid "Shows enabled plugins" +msgstr "" + +#: deluge/ui/console/cmdline/commands/plugin.py:40 +msgid "Enables a plugin" +msgstr "" + +#: deluge/ui/console/cmdline/commands/plugin.py:43 +msgid "Disables a plugin" +msgstr "" + +#: deluge/ui/console/cmdline/commands/plugin.py:51 +msgid "Reload list of available plugins" +msgstr "" + +#: deluge/ui/console/cmdline/commands/plugin.py:54 +msgid "Install a plugin from an .egg file" +msgstr "" + +#: deluge/ui/console/cmdline/commands/status.py:36 +msgid "" +"Raw values for upload/download rates (without KiB/s suffix)(useful for " +"scripts that want to do their own parsing)" +msgstr "" + +#: deluge/ui/console/cmdline/commands/status.py:46 +msgid "Do not show torrent status (Improves command speed)" +msgstr "" + +#: deluge/ui/console/cmdline/commands/connect.py:26 +msgid "Usage: connect <host[:port]> [<username>] [<password>]" +msgstr "" + +#: deluge/ui/console/cmdline/commands/connect.py:30 +msgid "Daemon host and port" +msgstr "" + +#: deluge/ui/console/cmdline/commands/connect.py:36 +#: deluge/ui/console/modes/preferences/preference_panes.py:652 +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:259 +msgid "Password" +msgstr "" + +#: deluge/ui/console/cmdline/commands/move.py:34 +msgid "The path to move the torrents to" +msgstr "" + +#: deluge/ui/console/cmdline/commands/debug.py:26 +msgid "The new state" +msgstr "" + +#: deluge/ui/console/cmdline/commands/help.py:29 +msgid "One or more commands" +msgstr "" + +#: deluge/ui/console/cmdline/commands/config.py:79 +msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]" +msgstr "" + +#: deluge/ui/console/cmdline/commands/info.py:101 +msgid "Show more information per torrent." +msgstr "" + +#: deluge/ui/console/cmdline/commands/info.py:109 +msgid "Show more detailed information including files and peers." +msgstr "" + +#: deluge/ui/console/cmdline/commands/info.py:116 +#, python-format +msgid "Show torrents with state STATE: %s." +msgstr "" + +#: deluge/ui/console/cmdline/commands/info.py:132 +msgid "Same as --sort but items are in reverse order." +msgstr "" + +#: deluge/ui/console/cmdline/commands/info.py:138 +msgid "One or more torrent ids. If none is given, list all" +msgstr "" + +#: deluge/ui/console/modes/connectionmanager.py:44 +msgid "Select Host" +msgstr "" + +#: deluge/ui/console/modes/connectionmanager.py:51 +msgid "Quit" +msgstr "" + +#: deluge/ui/console/modes/connectionmanager.py:51 +msgid "Delete Host" +msgstr "" + +#: deluge/ui/console/modes/connectionmanager.py:116 +msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)" +msgstr "" + +#: deluge/ui/console/modes/connectionmanager.py:133 +msgid "Error adding host" +msgstr "" + +#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96 +msgid "Columns" +msgstr "" + +#: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96 +msgid "Width" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:178 +msgid "General options" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:182 +msgid "Ring system bell when a download finishes" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:188 +msgid "List complete torrents after incomplete regardless of sorting order" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:193 +msgid "Move selection when moving torrents in the queue" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:200 +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67 +msgid "Language" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:202 +msgid "Command Line Mode" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:205 +msgid "Do not store duplicate input in history" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:210 +msgid "Store and load command line history in command line mode" +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 "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:234 +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18 +#: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39 +msgid "Folders" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:237 +msgid "Download To" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:254 +msgid "Move completed to" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:269 +msgid "Copy of .torrent files to" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:290 +msgid "Add Paused" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:293 +msgid "Pre-Allocate disk space" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:304 +msgid "Incomming Ports" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:313 +#: deluge/ui/console/modes/preferences/preference_panes.py:337 +msgid "From" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:321 +#: deluge/ui/console/modes/preferences/preference_panes.py:345 +msgid "To" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:331 +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:131 +msgid "Use Random Ports" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:352 +msgid "Incoming Interface" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:355 +msgid "IP address of the interface to listen on (leave empty for default):" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:363 +msgid "" +"The network interface name or IP address for outgoing BitTorrent " +"connections. (Leave empty for default.):" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:382 +msgid "Inbound" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:391 +msgid "Outbound" +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 "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:416 +#: deluge/ui/console/modes/preferences/preference_panes.py:469 +msgid "Maximum Connections" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:423 +#: deluge/ui/console/modes/preferences/preference_panes.py:476 +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:63 +msgid "Maximum Upload Slots" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:430 +#: deluge/ui/console/modes/preferences/preference_panes.py:483 +msgid "Maximum Download Speed (KiB/s)" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:437 +#: deluge/ui/console/modes/preferences/preference_panes.py:490 +msgid "Maximum Upload Speed (KiB/s)" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:444 +msgid "Maximum Half-Open Connections" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:451 +msgid "Maximum Connection Attempts per Second" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:463 +msgid "Rate Limit IP Overhead" +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 "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:513 +msgid "Yes, please send anonymous statistics." +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:531 +msgid "Daemon Port" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:538 +msgid "Allow remote connections" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:561 +msgid "Total" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:593 +msgid "Share Ratio" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:601 +msgid "Time Ratio" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:609 +msgid "Time (m)" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:633 +msgid "Remove torrent (Unchecked pauses torrent)" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:646 +msgid "Proxy Settings" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:649 +msgid "Type" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:653 +msgid "Hostname" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:673 +msgid "Proxy Type Help" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:697 +msgid "Cache Size (16 KiB blocks)" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:704 +msgid "Cache Expiry (seconds)" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:712 +msgid "Blocks Written" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:716 +msgid "Writes" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:720 +msgid "Write Cache Hit Ratio" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:725 +msgid "Blocks Read" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:729 +msgid "Blocks Read hit" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:732 +msgid "Reads" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:735 +msgid "Read Cache Hit Ratio" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:741 +msgid "Cache Size" +msgstr "" + +#: deluge/ui/console/modes/preferences/preference_panes.py:746 +msgid "Read Cache Size" +msgstr "" + +#: deluge/ui/console/modes/preferences/preferences.py:145 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333 +#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:87 +msgid "Apply" +msgstr "" + +#: deluge/ui/console/modes/preferences/preferences.py:145 +#: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:35 +#: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52 +#: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88 +msgid "OK" +msgstr "" + +#: deluge/ui/console/widgets/fields.py:1070 +msgid "Select Language" +msgstr "" + +#: deluge/ui/console/widgets/statusbars.py:120 +#, python-format +msgid "IP {!white,blue!}%s{!status!}" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/common.py:114 +#: deluge/plugins/Blocklist/deluge_blocklist/common.py:116 +#: deluge/plugins/Blocklist/deluge_blocklist/common.py:118 +#, python-format +msgid "The IP address \"%s\" is badly formed" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21 +msgid "Emule IP list (GZip)" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:22 +msgid "SafePeer Text (Zipped)" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:23 +msgid "PeerGuardian Text (Uncompressed)" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/webui.py:24 +msgid "PeerGuardian P2B (GZip)" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45 +msgid "Blocked IP Ranges /Whitelisted IP Ranges" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56 +#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156 +#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:204 +msgid "Blocklist" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233 +msgid "Bad IP address" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40 +msgid "Invalid leader" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:44 +msgid "Invalid magic code" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:49 +msgid "Invalid version" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:3 +msgid "Days" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:4 +msgid "Check for new list every:" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:5 +msgid "Import blocklist on startup" +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 "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:7 +msgid "Download the blocklist file if necessary and import the file." +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8 +msgid "Check Download and Import" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:9 +msgid "Download a new blocklist file and import it." +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:10 +msgid "Force Download and Import" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:11 +msgid "Blocklist is up to date" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:12 +msgid "<b>Options</b>" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:13 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:25 +msgid "Type:" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:14 +msgid "Date:" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:15 +msgid "File Size:" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:16 +msgid "<b>Info</b>" +msgstr "" + +#: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:17 +msgid "<b>Whitelist</b>" +msgstr "" + +#: deluge/plugins/Execute/deluge_execute/gtkui.py:36 +msgid "Torrent Complete" +msgstr "" + +#: deluge/plugins/Execute/deluge_execute/gtkui.py:37 +msgid "Torrent Added" +msgstr "" + +#: deluge/plugins/Execute/deluge_execute/gtkui.py:38 +msgid "Torrent Removed" +msgstr "" + +#: deluge/plugins/Execute/deluge_execute/gtkui.py:64 +#: deluge/plugins/Execute/deluge_execute/gtkui.py:79 +msgid "Execute" +msgstr "" + +#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:1 +msgid "Event" +msgstr "" + +#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:3 +msgid "<b>Add Command</b>" +msgstr "" + +#: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:4 +msgid "<b>Commands</b>" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327 +#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342 +msgid "Incompatible Option" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418 +msgid "" +"\"Watch Folder\" directory and \"Copy of .torrent files to\" directory " +"cannot be the same!" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:462 +#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:466 +msgid "AutoAdd" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495 +msgid "Double-click to toggle" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503 +#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511 +msgid "Double-click to edit" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507 +msgid "Path" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:125 +msgid "Watch folder does not exist." +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:128 +#: deluge/plugins/AutoAdd/deluge_autoadd/core.py:443 +msgid "Path does not exist." +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:1 +msgid "Watch Folder Properties" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:2 +msgid "" +"If a .torrent file is added to this directory,\n" +"it will be added to the session." +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4 +#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2 +msgid "Select A Folder" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:5 +msgid "Enable this watch folder" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:6 +msgid "<b>Watch Folder</b>" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:7 +msgid "Delete .torrent after adding" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:8 +msgid "" +"Once the torrent is added to the session,\n" +"the .torrent will be deleted." +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10 +msgid "Append extension after adding:" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:11 +msgid "" +"Once the torrent is added to the session,\n" +"an extension will be appended to the .torrent\n" +"and it will remain in the same directory." +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14 +msgid ".added" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:16 +msgid "" +"Once the torrent is added to the session,\n" +"the .torrent will copied to the chosen directory\n" +"and deleted from the watch folder." +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:20 +msgid "" +"Once the torrent is deleted from the session,\n" +"also delete the .torrent file used to add it." +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22 +msgid "<b>Torrent File Action</b>" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:23 +msgid "Set download folder" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24 +msgid "This folder will be where the torrent data is downloaded to." +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25 +msgid "<b>Download Folder</b>" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:26 +msgid "Set move completed folder" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:27 +msgid "<b>Move Completed</b>" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28 +msgid "Label: " +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:29 +msgid "<b>Label</b>" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:30 +msgid "Main" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:31 +msgid "The user selected here will be the owner of the torrent." +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32 +msgid "<b>Owner</b>" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103 +msgid "Max Upload Speed:" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130 +msgid "Max Connections:" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153 +msgid "Max Upload Slots:" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37 +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77 +msgid "Max Download Speed:" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38 +msgid "<b>Bandwidth</b>" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41 +#: deluge/ui/web/render/tab_status.html:19 +msgid "Auto Managed:" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:42 +msgid "Add Paused:" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:43 +msgid "Queue to:" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:47 +msgid "<b>Queue</b>" +msgstr "" + +#: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1 +msgid "<b>Watch Folders:</b>" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/gtkui.py:60 +msgid "minutes" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/gtkui.py:62 +msgid "1 minute" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/gtkui.py:64 +msgid "1 second" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/gtkui.py:66 +msgid "seconds" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1 +msgid "Stats" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2 +msgid "Resolution" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5 +msgid "Seeds/Peers" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1 +msgid "Download color:" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2 +msgid "Upload color:" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3 +msgid "<b>Connections Graph</b>" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4 +msgid "<b>Bandwidth Graph</b>" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5 +msgid "DHT nodes:" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6 +msgid "Cached DHT nodes:" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7 +msgid "DHT torrents:" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9 +msgid "<b>Seeds / Peers</b>" +msgstr "" + +#: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11 +msgid "<b>Graph Colors</b>" +msgstr "" + +#: deluge/plugins/WebUi/deluge_webui/gtkui.py:35 +#: deluge/plugins/WebUi/deluge_webui/gtkui.py:47 +msgid "WebUi" +msgstr "" + +#: deluge/plugins/WebUi/deluge_webui/gtkui.py:90 +msgid "" +"The Deluge web interface is not installed, please install the\n" +"interface and try again" +msgstr "" + +#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:1 +msgid "Enable web interface" +msgstr "" + +#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:2 +msgid "Enable SSL" +msgstr "" + +#: deluge/plugins/WebUi/deluge_webui/data/config.ui.h:3 +msgid "Listening port:" +msgstr "" + +#: deluge/plugins/Label/deluge_label/core.py:184 +msgid "Invalid label, valid characters:[a-z0-9_-]" +msgstr "" + +#: deluge/plugins/Label/deluge_label/core.py:186 +msgid "Empty Label" +msgstr "" + +#: deluge/plugins/Label/deluge_label/core.py:187 +msgid "Label already exists" +msgstr "" + +#: deluge/plugins/Label/deluge_label/core.py:195 +#: deluge/plugins/Label/deluge_label/core.py:285 +#: deluge/plugins/Label/deluge_label/core.py:320 +msgid "Unknown Label" +msgstr "" + +#: deluge/plugins/Label/deluge_label/core.py:321 +msgid "Unknown Torrent" +msgstr "" + +#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:46 +msgid "Label _Options" +msgstr "" + +#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:47 +msgid "_Remove Label" +msgstr "" + +#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:48 +msgid "_Add Label" +msgstr "" + +#: deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py:177 +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:2 +msgid "Label Options" +msgstr "" + +#: deluge/plugins/Label/deluge_label/gtkui/submenu.py:34 +#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:37 +#: deluge/plugins/Label/deluge_label/gtkui/label_config.py:45 +#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49 +#: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77 +msgid "Label" +msgstr "" + +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1 +msgid "tracker1.org" +msgstr "" + +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3 +msgid "<b>Label Options</b>" +msgstr "" + +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:9 +msgid "Apply per torrent max settings:" +msgstr "" + +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:10 +msgid "Maximum" +msgstr "" + +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:14 +msgid "Apply Queue settings:" +msgstr "" + +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17 +msgid "Apply folder settings:" +msgstr "" + +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19 +msgid "<i>(1 line per tracker)</i>" +msgstr "" + +#: deluge/plugins/Label/deluge_label/data/label_options.ui.h:20 +msgid "Automatically apply label:" +msgstr "" + +#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:1 +msgid "Add Label" +msgstr "" + +#: deluge/plugins/Label/deluge_label/data/label_add.ui.h:2 +msgid "<b>Add Label</b>" +msgstr "" + +#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1 +msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n" +msgstr "" + +#: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3 +msgid "<b>Labels</b>" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:171 +msgid "Notification Blink shown" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:175 +msgid "Popup notification is not enabled." +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:177 +msgid "libnotify is not installed" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:185 +msgid "Failed to popup notification" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188 +msgid "Notification popup shown" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:192 +msgid "Sound notification not enabled" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:194 +msgid "pygame is not installed" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:206 +#, python-format +msgid "Sound notification failed %s" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:210 +msgid "Sound notification Success" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:234 +msgid "Finished Torrent" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:238 +#, python-format +msgid "" +"The torrent \"%(name)s\" including %(num_files)i file(s) has finished " +"downloading." +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:287 +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:317 +msgid "Notifications" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/gtkui.py:663 +msgid "Choose Sound File" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/core.py:127 +#: deluge/plugins/Notifications/deluge_notifications/core.py:158 +#, python-format +msgid "There was an error sending the notification email: %s" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/core.py:145 +#, python-format +msgid "Server did not reply properly to HELO greeting: %s" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/core.py:149 +#, python-format +msgid "Server refused username/password combination: %s" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/core.py:174 +msgid "Notification email sent." +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/core.py:181 +#, python-format +msgid "Finished Torrent \"%(name)s\"" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/core.py:184 +#, python-format +msgid "" +"This email is to inform you that Deluge has finished downloading " +"\"%(name)s\", which includes %(num_files)i files.\n" +"To stop receiving these alerts, simply turn off email notification in " +"Deluge's preferences.\n" +"\n" +"Thank you,\n" +"Deluge." +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:1 +msgid "Tray icon blinks enabled" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:2 +msgid "Popups enabled" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:3 +msgid "Sound enabled" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4 +msgid "<b>UI Notifications</b>" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9 +msgid "<b>Recipients</b>" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:10 +msgid "Server requires TLS/SSL" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:13 +msgid "<b>Email Notifications</b>" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:15 +msgid "" +"This configuration does not mean that you'll actually receive notifications " +"for all these events." +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:16 +msgid "Subscriptions" +msgstr "" + +#: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:17 +msgid "Sound Customization" +msgstr "" + +#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:42 +#: deluge/plugins/Extractor/deluge_extractor/gtkui.py:53 +msgid "Extractor" +msgstr "" + +#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:1 +msgid "Extract to:" +msgstr "" + +#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:3 +msgid "Create torrent name sub-folder" +msgstr "" + +#: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:4 +msgid "" +"This option will create a sub-folder using the torrent's name within the " +"selected extract folder and put the extracted files there." +msgstr "" + +#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:196 +#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:359 +msgid "Scheduler" +msgstr "" + +#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289 +msgid "<b>Schedule</b>" +msgstr "" + +#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301 +msgid "Download Limit:" +msgstr "" + +#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:310 +msgid "Upload Limit:" +msgstr "" + +#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319 +msgid "Active Torrents:" +msgstr "" + +#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328 +msgid "Active Downloading:" +msgstr "" + +#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337 +msgid "Active Seeding:" +msgstr "" + +#: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:350 +msgid "<b>Slow Settings</b>" +msgstr "" + +#: deluge/ui/web/js/deluge-all/FileBrowser.js:13 +msgid "File Browser" +msgstr "" + +#: deluge/ui/web/js/deluge-all/FileBrowser.js:25 +msgid "Back" +msgstr "" + +#: deluge/ui/web/js/deluge-all/FileBrowser.js:29 +msgid "Forward" +msgstr "" + +#: deluge/ui/web/js/deluge-all/FileBrowser.js:37 +msgid "Home" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Toolbar.js:32 +msgid "Create" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Toolbar.js:100 +msgid "Help" +msgstr "Информацие" + +#: deluge/ui/web/js/deluge-all/Toolbar.js:108 +msgid "Logout" +msgstr "" + +#: deluge/ui/web/js/deluge-all/EditTrackerWindow.js:34 +msgid "Save" +msgstr "" + +#: deluge/ui/web/js/deluge-all/AboutWindow.js:19 +msgid "About Deluge" +msgstr "" + +#: deluge/ui/web/js/deluge-all/AboutWindow.js:102 +msgid "Copyright 2007-2018 Deluge Team" +msgstr "" + +#: deluge/ui/web/js/deluge-all/RemoveWindow.js:33 +msgid "Remove With Data" +msgstr "" + +#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17 +msgid "Add Connection" +msgstr "" + +#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44 +#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44 +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53 +msgid "Host:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96 +#, python-brace-format +msgid "Unable to add host: {0}" +msgstr "" + +#: deluge/ui/web/js/deluge-all/MoveStorage.js:37 +msgid "Move" +msgstr "" + +#: deluge/ui/web/js/deluge-all/MoveStorage.js:54 +msgid "Browse" +msgstr "" + +#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:17 +msgid "Edit Connection" +msgstr "" + +#: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115 +msgid "Unable to edit host" +msgstr "" + +#: deluge/ui/web/js/deluge-all/LoginWindow.js:22 +#: deluge/ui/web/js/deluge-all/LoginWindow.js:31 +msgid "Login" +msgstr "" + +#: deluge/ui/web/js/deluge-all/LoginWindow.js:108 +msgid "Login Failed" +msgstr "" + +#: deluge/ui/web/js/deluge-all/LoginWindow.js:109 +msgid "You entered an incorrect password" +msgstr "" + +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:228 +msgid "Public" +msgstr "" + +#: deluge/ui/web/js/deluge-all/TorrentGrid.js:292 +msgid "Last Transfer" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Deluge.js:158 +msgid "Mixed" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:87 +msgid "Set Maximum Connections" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:97 +msgid "Download Speed" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:102 +#: deluge/ui/web/js/deluge-all/Statusbar.js:161 +#: deluge/ui/web/js/deluge-all/Menus.js:79 +#: deluge/ui/web/js/deluge-all/Menus.js:124 +msgid "5 KiB/s" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:108 +#: deluge/ui/web/js/deluge-all/Statusbar.js:167 +#: deluge/ui/web/js/deluge-all/Menus.js:85 +#: deluge/ui/web/js/deluge-all/Menus.js:130 +msgid "10 KiB/s" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:114 +#: deluge/ui/web/js/deluge-all/Statusbar.js:173 +#: deluge/ui/web/js/deluge-all/Menus.js:91 +#: deluge/ui/web/js/deluge-all/Menus.js:136 +msgid "30 KiB/s" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:120 +#: deluge/ui/web/js/deluge-all/Statusbar.js:179 +#: deluge/ui/web/js/deluge-all/Menus.js:97 +#: deluge/ui/web/js/deluge-all/Menus.js:142 +msgid "80 KiB/s" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:126 +#: deluge/ui/web/js/deluge-all/Statusbar.js:185 +#: deluge/ui/web/js/deluge-all/Menus.js:103 +#: deluge/ui/web/js/deluge-all/Menus.js:148 +msgid "300 KiB/s" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:145 +msgid "Set Maximum Download Speed" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:156 +msgid "Upload Speed" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:204 +msgid "Set Maximum Upload Speed" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:215 +msgid "Protocol Traffic Download/Upload" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:242 +msgid "Freespace in download folder" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Statusbar.js:357 +#, python-brace-format +msgid "<b>IP</b> {0}" +msgstr "" + +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:33 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:187 +msgid "Connect" +msgstr "" + +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:120 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:197 +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:379 +msgid "Stop Daemon" +msgstr "" + +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:185 +msgid "Disconnect" +msgstr "" + +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:204 +msgid "Start Daemon" +msgstr "" + +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:322 +msgid "Change Default Password" +msgstr "" + +#: deluge/ui/web/js/deluge-all/ConnectionManager.js:324 +msgid "" +"We recommend changing the default password.<br><br>Would you like to change " +"it now?" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Sidebar.js:13 +msgid "Tracker Host" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Sidebar.js:33 +msgid "Filters" +msgstr "" + +#: deluge/ui/web/js/deluge-all/UI.js:142 +msgid "Connection restored" +msgstr "" + +#: deluge/ui/web/js/deluge-all/UI.js:153 +msgid "Lost Connection" +msgstr "" + +#: deluge/ui/web/js/deluge-all/UI.js:154 +msgid "The connection to the webserver has been lost!" +msgstr "" + +#: deluge/ui/web/js/deluge-all/UI.js:160 +msgid "Lost connection to webserver" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Menus.js:72 +msgid "D/L Speed Limit" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Menus.js:117 +msgid "U/L Speed Limit" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Menus.js:162 +msgid "Connection Limit" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Menus.js:207 +msgid "Upload Slot Limit" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Menus.js:316 +msgid "Update Tracker" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Menus.js:339 +msgid "Force Recheck" +msgstr "" + +#: deluge/ui/web/js/deluge-all/Menus.js:359 +msgid "Expand All" +msgstr "" + +#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:13 +msgid "Details" +msgstr "" + +#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:28 +msgid "Comment:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/details/DetailsTab.js:29 +msgid "Status:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:242 +msgid "Move Completed:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272 +#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116 +msgid "General" +msgstr "" + +#: deluge/ui/web/js/deluge-all/details/OptionsTab.js:279 +msgid "Private" +msgstr "" + +#: deluge/ui/web/js/deluge-all/details/StatusTab.js:39 +msgid "Loading" +msgstr "" + +#: deluge/ui/web/js/deluge-all/details/StatusTab.js:118 +msgid "True" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:50 +msgid "Be alerted about new releases" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:67 +msgid "" +"Help us improve Deluge by sending us your Python version, PyGTK version, OS " +"and processor types. Absolutely no other information is sent." +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215 +msgid "Pause torrent" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17 +msgid "Install Plugin" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:33 +#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:109 +msgid "Install" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:45 +msgid "Select an egg" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46 +msgid "Plugin Egg" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49 +msgid "Browse..." +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59 +msgid "Uploading your plugin..." +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52 +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162 +msgid "Maximum Connections:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74 +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184 +msgid "Maximum Download Speed (KiB/s):" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85 +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195 +msgid "Maximum Upload Speed (KiB/s):" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96 +msgid "Maximum Half-Open Connections:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107 +msgid "Maximum Connection Attempts per Second:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173 +msgid "Maximum Upload Slots:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43 +msgid "Cache Size (16 KiB Blocks):" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132 +msgid "Force Use of Proxy" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116 +msgid "Find More" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69 +msgid "Use Random Port" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241 +msgid "Type Of Service" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53 +msgid "Show filters with zero torrents" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60 +msgid "Allow the use of multiple filters at once" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94 +msgid "WebUI Password" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:110 +msgid "Old:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:114 +msgid "New:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:118 +msgid "Confirm:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124 +msgid "Server" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140 +msgid "Session Timeout:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165 +msgid "Enable SSL (paths relative to Deluge config folder)" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177 +msgid "Private Key:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187 +msgid "Certificate:" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205 +msgid "WebUI Language Changed" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207 +msgid "Do you want to refresh the page now to use the new language?" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210 +msgid "Refresh" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:244 +msgid "Invalid Password" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:245 +msgid "Your passwords don't match!" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260 +msgid "Your old password was incorrect!" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269 +msgid "Change Successful" +msgstr "" + +#: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270 +msgid "Your password was successfully changed!" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13 +msgid "Add from Url" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37 +#: deluge/ui/web/js/deluge-all/add/AddWindow.js:143 +msgid "Url" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:45 +msgid "Cookies" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/UrlWindow.js:99 +msgid "Failed to download torrent" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/AddWindow.js:133 +msgid "File" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/AddWindow.js:149 +msgid "Infohash" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/AddWindow.js:260 +msgid "Uploading your torrent..." +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/AddWindow.js:292 +msgid "Failed to upload torrent" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/AddWindow.js:317 +msgid "Not a valid torrent" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50 +msgid "Move Completed Folder" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85 +msgid "Max Down Speed" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93 +msgid "Max Up Speed" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125 +msgid "Add In Paused State" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161 +msgid "Super Seed" +msgstr "" + +#: deluge/ui/web/js/deluge-all/add/FilesTab.js:43 +msgid "Download" +msgstr "" + +#: deluge/ui/web/render/tab_status.html:11 +msgid "ETA:" +msgstr "" + +#: deluge/ui/web/render/tab_status.html:26 +msgid "Date Added:" +msgstr "" diff --git a/deluge/i18n/ms.po b/deluge/i18n/ms.po index ff671ad3f..84b905e8c 100644 --- a/deluge/i18n/ms.po +++ b/deluge/i18n/ms.po @@ -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" @@ -4471,16 +4471,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4489,7 +4489,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/nap.po b/deluge/i18n/nap.po index dea9f4b8d..5c4ca92b9 100644 --- a/deluge/i18n/nap.po +++ b/deluge/i18n/nap.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/nb.po b/deluge/i18n/nb.po index 62e9a000f..a21eb7803 100644 --- a/deluge/i18n/nb.po +++ b/deluge/i18n/nb.po @@ -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" @@ -4441,16 +4441,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4459,7 +4459,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/nds.po b/deluge/i18n/nds.po index 9a4566fde..fd8d34f3e 100644 --- a/deluge/i18n/nds.po +++ b/deluge/i18n/nds.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/nl.po b/deluge/i18n/nl.po index 90932895f..85b19f68a 100644 --- a/deluge/i18n/nl.po +++ b/deluge/i18n/nl.po @@ -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 @@ -4449,16 +4449,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4467,7 +4467,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/nn.po b/deluge/i18n/nn.po index 72c93239c..618123cfa 100644 --- a/deluge/i18n/nn.po +++ b/deluge/i18n/nn.po @@ -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" @@ -4424,16 +4424,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4442,7 +4442,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/oc.po b/deluge/i18n/oc.po index 609c37239..3d8784808 100644 --- a/deluge/i18n/oc.po +++ b/deluge/i18n/oc.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/pl.po b/deluge/i18n/pl.po index 7a269f4ab..509c21862 100644 --- a/deluge/i18n/pl.po +++ b/deluge/i18n/pl.po @@ -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 "" @@ -4441,16 +4441,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4459,7 +4459,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/pms.po b/deluge/i18n/pms.po index a670047f5..a72d65d86 100644 --- a/deluge/i18n/pms.po +++ b/deluge/i18n/pms.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/pt.po b/deluge/i18n/pt.po index 867dcf9fd..27ef213c7 100644 --- a/deluge/i18n/pt.po +++ b/deluge/i18n/pt.po @@ -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" @@ -4464,16 +4464,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4482,7 +4482,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/pt_BR.po b/deluge/i18n/pt_BR.po index b6a36de09..9850f3e3c 100644 --- a/deluge/i18n/pt_BR.po +++ b/deluge/i18n/pt_BR.po @@ -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" @@ -4477,16 +4477,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4495,7 +4495,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/ro.po b/deluge/i18n/ro.po index 39df0414d..bf47fb10f 100644 --- a/deluge/i18n/ro.po +++ b/deluge/i18n/ro.po @@ -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" @@ -4452,16 +4452,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4470,7 +4470,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/ru.po b/deluge/i18n/ru.po index 6552c1d91..5142278b3 100644 --- a/deluge/i18n/ru.po +++ b/deluge/i18n/ru.po @@ -8,14 +8,16 @@ 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-03 13:05+0000\n" +"PO-Revision-Date: 2022-09-09 17:58+0000\n" "Last-Translator: adem <adem4ik@gmail.com>\n" -"Language-Team: Russian <ru@li.org>\n" +"Language-Team: Russian Launchpad Translators <lp-l10n-" +"ru@lists.launchpad.net>\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: ru\n" #: deluge/common.py:411 msgid "B" @@ -53,6 +55,7 @@ msgstr "Г" msgid "T" msgstr "T" +# ❗Это сокращение KiB/s, см. ф. fspeed в deluge/common.py #: deluge/common.py:515 deluge/ui/gtk3/statusbar.py:442 #: deluge/ui/gtk3/statusbar.py:455 deluge/ui/gtk3/statusbar.py:464 #: deluge/ui/gtk3/statusbar.py:477 deluge/ui/gtk3/statusbar.py:484 @@ -108,11 +111,11 @@ msgstr "Общие параметры" #: deluge/argparserbase.py:175 msgid "Print this help message" -msgstr "Показывать это вспомогательное сообщение" +msgstr "Показать эту справку" #: deluge/argparserbase.py:182 msgid "Print version information" -msgstr "Вывести сведения о версии" +msgstr "Показать информацию о версии" #: deluge/argparserbase.py:194 msgid "Set the config directory path" @@ -120,7 +123,7 @@ msgstr "Установить путь каталога настроек" #: deluge/argparserbase.py:200 msgid "Output to specified logfile instead of stdout" -msgstr "" +msgstr "Вывод в указанный файл журнала вместо stdout" #: deluge/argparserbase.py:206 msgid "Set the log level (none, error, warning, info, debug)" @@ -134,10 +137,12 @@ msgid "" "Enable logfile rotation, with optional maximum logfile size, default: " "%(const)s (Logfile rotation count is 5)" 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 @@ -145,6 +150,8 @@ msgid "" "Profile %(prog)s with cProfile. Outputs to stdout unless a filename is " "specified" msgstr "" +"Профилировать %(prog)s с помощью cProfile. Вывод направляется в стандартный " +"вывод, если не указано имя файла." #: deluge/argparserbase.py:351 msgid "Process Control Options" @@ -156,23 +163,26 @@ msgstr "Pid-файл для хранения ID процесса" #: deluge/argparserbase.py:365 msgid "Do not daemonize (fork) this process" -msgstr "" +msgstr "Работать не в фоновом режиме (не выполнять системный вызов fork)" #: deluge/argparserbase.py:379 msgid "Change to this user on startup (Requires root)" -msgstr "Переключиться на этого пользователя при запуске (требует права root)" +msgstr "" +"Переключиться на этого пользователя при запуске (требуются права " +"администратора)" #: deluge/argparserbase.py:386 msgid "Change to this group on startup (Requires root)" -msgstr "Переключиться на эту группу при запуске (требует права root)" +msgstr "" +"Переключиться на эту группу при запуске (требуются права администратора)" #: deluge/core/daemon_entry.py:25 msgid "Daemon Options" -msgstr "Параметры демона" +msgstr "Параметры службы" #: deluge/core/daemon_entry.py:31 msgid "IP address to listen for UI connections" -msgstr "IP адресс, прослушиваемый для соединений с UI" +msgstr "Прослушиваемый IP-адрес для соединений с интерфейсом" #: deluge/core/daemon_entry.py:39 msgid "Port to listen for UI connections on" @@ -180,7 +190,7 @@ msgstr "Порт, прослушиваемый для соединений с UI #: deluge/core/daemon_entry.py:47 msgid "IP address to listen for BitTorrent connections" -msgstr "IP адресс, прослушиваемый для соединений BitTorrent" +msgstr "Прослушиваемый IP-адрес для соединений БитТоррент" #: deluge/core/daemon_entry.py:56 msgid "" @@ -191,6 +201,8 @@ msgstr "" #: deluge/core/daemon_entry.py:63 msgid "Config keys to be unmodified by `set_config` RPC" msgstr "" +"Параметры конфигурации, которые не будут изменены при удалённом вызове " +"`set_config`" #: deluge/ui/common.py:37 deluge/ui/gtk3/filtertreeview.py:130 #: deluge/ui/web/js/deluge-all/UI.js:18 @@ -261,7 +273,7 @@ msgstr "Название" #: deluge/ui/web/js/deluge-all/details/PeersTab.js:80 #: deluge/ui/web/js/deluge-all/details/FilesTab.js:34 msgid "Progress" -msgstr "Состояние" +msgstr "Прогресс" #: deluge/ui/common.py:52 deluge/ui/web/js/deluge-all/Sidebar.js:12 msgid "State" @@ -286,7 +298,7 @@ msgstr "Загружено" #: deluge/ui/common.py:56 deluge/ui/gtk3/torrentview.py:296 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:252 msgid "Uploaded" -msgstr "Роздано" +msgstr "Отдано" #: deluge/ui/common.py:57 deluge/ui/gtk3/torrentview.py:303 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:260 @@ -310,31 +322,31 @@ msgstr "Загрузка" #: deluge/ui/web/js/deluge-all/TorrentGrid.js:151 #: deluge/ui/web/js/deluge-all/details/PeersTab.js:94 msgid "Up Speed" -msgstr "Скорость раздачи" +msgstr "Отдача" #: deluge/ui/common.py:61 deluge/ui/gtk3/torrentview.py:352 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:268 msgid "Down Limit" -msgstr "Нижнее ограничение" +msgstr "Порог загрузки" #: deluge/ui/common.py:62 deluge/ui/gtk3/torrentview.py:359 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:276 msgid "Up Limit" -msgstr "Лимит скорости раздачи" +msgstr "Порог отдачи" #: deluge/ui/common.py:63 deluge/ui/web/js/deluge-all/add/OptionsTab.js:101 msgid "Max Connections" -msgstr "Максимальное число соединений" +msgstr "Максимум соединений" #: deluge/ui/common.py:64 deluge/ui/web/js/deluge-all/add/OptionsTab.js:109 msgid "Max Upload Slots" -msgstr "Максимальное число слотов отдачи" +msgstr "Максимум слотов раздачи" #: deluge/ui/common.py:65 deluge/ui/gtk3/torrentview.py:325 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:136 #: deluge/ui/web/js/deluge-all/details/PeersTab.js:46 msgid "Peers" -msgstr "Узлы" +msgstr "Пиры" #: deluge/ui/common.py:66 deluge/ui/gtk3/torrentview.py:317 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:128 @@ -401,7 +413,7 @@ msgstr "Завершено" #: deluge/ui/common.py:87 deluge/ui/gtk3/torrentview.py:366 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:158 msgid "ETA" -msgstr "Осталось" +msgstr "Ост. время" #: deluge/ui/common.py:88 deluge/ui/gtk3/torrentview.py:418 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:30 @@ -442,15 +454,15 @@ msgstr "Удалить при рейтинге" #: deluge/ui/common.py:102 deluge/ui/common.py:108 msgid "Move On Completed" -msgstr "" +msgstr "Перемещение по завершению" #: deluge/ui/common.py:104 msgid "Move Completed Path" -msgstr "" +msgstr "Путь для перемещения завершённых" #: deluge/ui/common.py:112 msgid "Move On Completed Path" -msgstr "" +msgstr "Путь для перемещения завершённых" #: deluge/ui/common.py:115 deluge/ui/gtk3/filtertreeview.py:135 #: deluge/ui/gtk3/torrentview.py:416 @@ -466,13 +478,13 @@ msgstr "Части" #: deluge/ui/common.py:117 msgid "Seed Rank" -msgstr "Ранг сида" +msgstr "Ранг раздачи" #: 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 "Супер-раздача" #: deluge/ui/common.py:123 deluge/ui/web/js/deluge-all/details/StatusTab.js:122 msgid "Warning" @@ -509,7 +521,7 @@ msgstr "Загрузки" #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:21 #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:73 msgid "Bandwidth" -msgstr "Ограничения" +msgstr "Полоса пропускания" #: deluge/ui/common.py:132 #: deluge/ui/console/modes/preferences/preference_panes.py:550 @@ -519,7 +531,7 @@ msgstr "Ограничения" #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:176 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:18 msgid "Queue" -msgstr "Добавить в очередь" +msgstr "Очередь" #: deluge/ui/common.py:133 #: deluge/ui/console/modes/preferences/preference_panes.py:300 @@ -592,6 +604,8 @@ msgid "" "Deluge cannot find the `deluged` executable, check that the deluged package " "is installed, or added to your PATH." msgstr "" +"Deluge не может найти исполняемый файл `deluged`, проверьте, что пакет " +"`deluged` установлен или добавьте его в PATH" #: deluge/ui/countries.py:10 msgid "Afghanistan" @@ -1067,7 +1081,7 @@ msgstr "Кувейт" #: deluge/ui/countries.py:128 msgid "Kyrgyzstan" -msgstr "Кыргызстан" +msgstr "Киргизия" #: deluge/ui/countries.py:129 msgid "Lao People's Democratic Republic" @@ -1459,7 +1473,7 @@ msgstr "Таджикистан" #: deluge/ui/countries.py:226 msgid "Tanzania, United Republic of" -msgstr "Объединенная республика Танзания" +msgstr "Объединённая Республика Танзания" #: deluge/ui/countries.py:227 msgid "Thailand" @@ -1523,7 +1537,7 @@ msgstr "Великобритания" #: deluge/ui/countries.py:242 msgid "United States" -msgstr "Соединенные Штаты Америки" +msgstr "Соединённые Штаты Америки" #: deluge/ui/countries.py:243 msgid "United States Minor Outlying Islands" @@ -1584,6 +1598,8 @@ msgstr "Параметры интерфейса" #: deluge/ui/ui_entry.py:57 msgid "Set the default UI to be run, when no UI is specified" msgstr "" +"Установить пользовательский интерфейс для запуска по умолчанию, когда " +"пользовательский интерфейс не указан" #: deluge/ui/ui_entry.py:91 msgid "" @@ -1591,7 +1607,7 @@ msgid "" " (default UI: *)" msgstr "" "Альтернативный интерфейс для запуска с необязательными аргументами \n" -" (стандартный интерфейм: *)" +" (стандартный интерфейс: *)" #: deluge/ui/web/web.py:32 msgid "Web Server Options" @@ -1599,15 +1615,16 @@ msgstr "Параметры веб-сервера" #: deluge/ui/web/web.py:38 msgid "IP address for web server to listen on" -msgstr "" +msgstr "IP-адрес для прослушивания веб-сервером" #: deluge/ui/web/web.py:46 msgid "Port for web server to listen on" -msgstr "" +msgstr "Порт для прослушивания веб-сервером" #: deluge/ui/web/web.py:53 msgid "Set the base path that the ui is running on" msgstr "" +"Установить базовый путь, по которому работает пользовательский интерфейс" #: deluge/ui/web/web.py:56 msgid "Force the web server to use SSL" @@ -1619,7 +1636,7 @@ msgstr "Требовать отключение SSL от веб-сервера" #: deluge/ui/web/json_api.py:868 msgid "Daemon does not exist" -msgstr "Демон не существует" +msgstr "Служба не существует" #: deluge/ui/web/json_api.py:875 msgid "Daemon not running" @@ -1692,7 +1709,7 @@ msgstr "_Сохранить" #: deluge/ui/gtk3/createtorrentdialog.py:271 #: deluge/ui/gtk3/addtorrentdialog.py:712 msgid "Torrent files" -msgstr "Торренты" +msgstr "Торрент-файлы" #: deluge/ui/gtk3/createtorrentdialog.py:275 #: deluge/ui/gtk3/addtorrentdialog.py:716 @@ -1724,7 +1741,7 @@ msgstr "Deluge" #: deluge/ui/gtk3/path_combo_chooser.py:393 #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:20 msgid "Edit path" -msgstr "Редактировать путь" +msgstr "Изменить путь" #: deluge/ui/gtk3/path_combo_chooser.py:395 #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:21 @@ -1746,8 +1763,8 @@ msgid "" "A peer-to-peer file sharing program\n" "utilizing the BitTorrent protocol." msgstr "" -"Программа для обмена данными по протоколу p2p\n" -"с использованием протокола BitTorrent protocol." +"Программа для обмена файлами\n" +"по пиринговому протоколу БитТоррент" #: deluge/ui/gtk3/aboutdialog.py:46 #: deluge/ui/web/js/deluge-all/AboutWindow.js:55 @@ -1760,7 +1777,7 @@ msgstr "Текущие разработчики:" #: deluge/ui/gtk3/aboutdialog.py:61 msgid "Past Developers or Contributors:" -msgstr "Прошлые разработчики и контрибуторы:" +msgstr "Прошлые разработчики и участники:" #: deluge/ui/gtk3/aboutdialog.py:795 msgid "" @@ -1789,9 +1806,9 @@ msgid "" "also delete it here." msgstr "" "Эта программа является свободным программным обеспечением; Вы можете " -"распространять и/или изменять ее согласно правилам лицензии GNU General " +"распространять и/или изменять её согласно правилам лицензии GNU General " "Public License, опубликованной Фондом Свободного Программного обеспечения; " -"как под версийей 3 лицензии, так и (по желанию) под более поздней. \n" +"как под версией 3 лицензии, так и (по желанию) под более поздней. \n" "\n" "Эта программа распространяется в надежде что будет полезной, но БЕЗ КАКИХ-" "ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или " @@ -1810,7 +1827,7 @@ msgstr "" "исключение для вашей версии файла(ов), но вы не обязаны это делать. Если вы " "не хотите сделать это, удалите это заявление об исключении из вашей версии. " "Если вы удалите это заявление об исключении из всех исходных файлы " -"программы, то так же удалите ее." +"программы, то так же удалите её." #: deluge/ui/gtk3/aboutdialog.py:829 #: deluge/ui/web/js/deluge-all/AboutWindow.js:65 @@ -1839,7 +1856,7 @@ msgstr "Дублировать торрент(ы)" #, python-format msgid "" "You cannot add the same torrent twice. %d torrents were already added." -msgstr "" +msgstr "Вы не можете добавить этот торрент дважды. %d торренты уже добавлены" #: deluge/ui/gtk3/addtorrentdialog.py:255 msgid "Invalid File" @@ -1864,7 +1881,7 @@ msgstr "Неверный URL" #: deluge/ui/gtk3/addtorrentdialog.py:778 msgid "is not a valid URL." -msgstr "является некорректным URL." +msgstr "не является верным адресом." #: deluge/ui/gtk3/addtorrentdialog.py:784 msgid "Downloading..." @@ -1934,7 +1951,7 @@ msgstr "Пароль:" #: deluge/ui/gtk3/dialogs.py:257 msgid "Edit Account" -msgstr "Редактировать учётную запись" +msgstr "Править учётную запись" #: deluge/ui/gtk3/dialogs.py:258 msgid "Edit existing account" @@ -1993,7 +2010,7 @@ msgstr "Прочее..." #: deluge/ui/gtk3/statusbar.py:155 deluge/ui/web/js/deluge-all/Statusbar.js:18 msgid "Not Connected" -msgstr "Не подключен" +msgstr "Не подключён" #: deluge/ui/gtk3/statusbar.py:175 msgid "Connections (Limit)" @@ -2009,7 +2026,7 @@ msgstr "Скорость отдачи (порог)" #: deluge/ui/gtk3/statusbar.py:196 msgid "Protocol Traffic (Down:Up)" -msgstr "" +msgstr "Трафик по протоколу (загружено/отдано)" #: deluge/ui/gtk3/statusbar.py:201 deluge/ui/web/js/deluge-all/Statusbar.js:234 msgid "DHT Nodes" @@ -2026,7 +2043,7 @@ msgstr "Внешний адрес IP" #: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:409 #, python-format msgid "<b>IP</b> <small>%s</small>" -msgstr "" +msgstr "<b>IP</b> <small>%s</small>" #: deluge/ui/gtk3/statusbar.py:213 deluge/ui/gtk3/statusbar.py:408 #: deluge/ui/console/widgets/statusbars.py:121 @@ -2036,11 +2053,11 @@ msgstr "н/д" #: deluge/ui/gtk3/statusbar.py:220 msgid "<b><small>Port Issue</small></b>" -msgstr "" +msgstr "<b><small>Проблема с портом</small></b>" #: deluge/ui/gtk3/statusbar.py:222 msgid "No incoming connections, check port forwarding" -msgstr "" +msgstr "Нет входящих соединений, проверьте перенаправление порта" #: deluge/ui/gtk3/statusbar.py:475 deluge/ui/gtk3/systemtray.py:394 #: deluge/ui/gtk3/menubar.py:447 @@ -2060,7 +2077,7 @@ msgstr "Ограничение скорости отдачи" #: deluge/ui/gtk3/statusbar.py:483 deluge/ui/gtk3/systemtray.py:410 #: deluge/ui/gtk3/menubar.py:454 msgid "Set the maximum upload speed" -msgstr "Установить максимальную скорость отдачи" +msgstr "Установить максимальную скорость ротдачи" #: deluge/ui/gtk3/statusbar.py:489 deluge/ui/gtk3/menubar.py:459 msgid "Incoming Connections" @@ -2068,7 +2085,7 @@ msgstr "Входящие соединения" #: deluge/ui/gtk3/statusbar.py:490 deluge/ui/gtk3/menubar.py:460 msgid "Set the maximum incoming connections" -msgstr "Установить максимальное число входящих соединений" +msgstr "Установить максимум входящих соединений" #: deluge/ui/gtk3/tab_data_funcs.py:28 #, python-brace-format @@ -2078,13 +2095,13 @@ msgstr "{state} {percent} %" #: deluge/ui/gtk3/tab_data_funcs.py:30 #, python-brace-format msgid "{state}: {err_msg}" -msgstr "" +msgstr "{state}: {err_msg}" #: deluge/ui/gtk3/tab_data_funcs.py:42 #: deluge/ui/gtk3/torrentview_data_funcs.py:284 #: deluge/ui/web/js/deluge-all/TorrentGrid.js:74 msgid "Never" -msgstr "" +msgstr "Никогда" #: deluge/ui/gtk3/tab_data_funcs.py:96 msgid "Yes" @@ -2117,12 +2134,12 @@ msgstr "_Подробности" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:27 #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:9 msgid "Fi_les" -msgstr "Файлы" +msgstr "Фай_лы" #: deluge/ui/gtk3/torrentdetails.py:146 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:28 msgid "_Peers" -msgstr "_Узлы" +msgstr "_Пиры" #: deluge/ui/gtk3/torrentdetails.py:147 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:45 @@ -2133,7 +2150,7 @@ msgstr "_Параметры" #: deluge/ui/gtk3/torrentdetails.py:148 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:52 msgid "_Trackers" -msgstr "" +msgstr "_Трекеры" #: deluge/ui/gtk3/systemtray.py:184 msgid "Not Connected..." @@ -2174,26 +2191,35 @@ msgid "" "A Deluge daemon (deluged) is already running.\n" "To use Standalone mode, stop local daemon and restart Deluge." msgstr "" +"Служба Deluge (deluged) уже запущена.\n" +"Для использования автономного режима, остановите локальную службу и " +"перезапустите Deluge." #: deluge/ui/gtk3/gtkui.py:319 msgid "" "Only Thin Client mode is available because libtorrent is not installed.\n" "To use Standalone mode, please install libtorrent package." msgstr "" +"Доступен только режим тонкого клиента, потому что libtorrent не установлен.\n" +"Для использования автономного режима, пожалуйста установите пакет libtorrent." #: deluge/ui/gtk3/gtkui.py:325 deluge/ui/gtk3/gtkui.py:331 msgid "" "Only Thin Client mode is available due to unknown Import Error.\n" "To use Standalone mode, please see logs for error details." msgstr "" +"Доступен только режим тонкого клиента из-за неизвестной ошибки импорта " +"(Import Error).\n" +"Для использования автономного режима смотрите подробности об ошибке в " +"журнале событий." #: deluge/ui/gtk3/gtkui.py:349 msgid "Continue in Thin Client mode?" -msgstr "" +msgstr "Продолжить в режиме тонкого клиента?" #: deluge/ui/gtk3/gtkui.py:350 msgid "Change User Interface Mode" -msgstr "" +msgstr "Изменить режим пользовательского интерфейса" #: deluge/ui/gtk3/connectionmanager.py:52 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:56 @@ -2208,7 +2234,7 @@ msgstr "В сети" #: deluge/ui/gtk3/connectionmanager.py:54 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:59 msgid "Connected" -msgstr "Подключен" +msgstr "Подключено" #: deluge/ui/gtk3/connectionmanager.py:110 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:176 @@ -2220,7 +2246,7 @@ msgstr "Статус" #: deluge/ui/gtk3/connectionmanager.py:115 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:66 msgid "Host" -msgstr "Сервер" +msgstr "Хост" #: deluge/ui/gtk3/connectionmanager.py:122 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:73 @@ -2230,41 +2256,45 @@ msgstr "Версия" #: deluge/ui/gtk3/connectionmanager.py:219 #: deluge/ui/gtk3/glade/connection_manager.ui.h:8 msgid "_Start Daemon" -msgstr "_Запустить демон" +msgstr "З_апустить службу" #: deluge/ui/gtk3/connectionmanager.py:250 msgid "_Stop Daemon" -msgstr "_Остановить демон" +msgstr "О_становить службу" #: deluge/ui/gtk3/connectionmanager.py:255 msgid "_Disconnect" -msgstr "" +msgstr "_Отсоединить" #: deluge/ui/gtk3/connectionmanager.py:280 msgid "Unable to start daemon!" -msgstr "Не удается запустить демон." +msgstr "Не удаётся запустить службу!" #: deluge/ui/gtk3/connectionmanager.py:281 msgid "Check deluged package is installed and logs for further details" msgstr "" +"Проверьте установлен ли пакет deluged и журналы для получения дополнительной " +"информации" #: deluge/ui/gtk3/connectionmanager.py:332 msgid "Incompatible Client" -msgstr "" +msgstr "Несовместимый клиент" #: deluge/ui/gtk3/connectionmanager.py:343 msgid "" "Auto-starting the daemon locally is not enabled. See \"Options\" on the " "\"Connection Manager\"." msgstr "" +"Автозапуск локальной службы отключён. Смотрите «Параметры запуска» в " +"«Управлении подключениями»." #: deluge/ui/gtk3/connectionmanager.py:346 msgid "Failed To Connect" -msgstr "" +msgstr "Не удалось подключиться" #: deluge/ui/gtk3/connectionmanager.py:403 msgid "Edit Host" -msgstr "" +msgstr "Изменить хост" #: deluge/ui/gtk3/connectionmanager.py:428 msgid "Error Adding Host" @@ -2272,7 +2302,7 @@ msgstr "Ошибка при добавлении узла" #: deluge/ui/gtk3/connectionmanager.py:464 msgid "Error Updating Host" -msgstr "" +msgstr "Ошибка обновления хоста" #: deluge/ui/gtk3/preferences.py:131 #: deluge/ui/console/cmdline/commands/connect.py:33 @@ -2303,33 +2333,35 @@ msgstr "Модуль" #: deluge/ui/gtk3/preferences.py:876 deluge/ui/gtk3/preferences.py:886 msgid "Attention" -msgstr "" +msgstr "Внимание" #: deluge/ui/gtk3/preferences.py:876 msgid "You must choose a language" -msgstr "" +msgstr "Необходимо выбрать язык" #: deluge/ui/gtk3/preferences.py:887 msgid "You must now restart the deluge UI for the changes to take effect." msgstr "" +"Необходимо перезапустить пользовательский интерфейс deluge для того, чтобы " +"изменения вступили в силу." #: deluge/ui/gtk3/preferences.py:940 msgid "Thinclient" -msgstr "" +msgstr "Тонкий клиент" #: deluge/ui/gtk3/preferences.py:940 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:18 msgid "Standalone" -msgstr "" +msgstr "Автономный" #: deluge/ui/gtk3/preferences.py:942 msgid "Switching Deluge Client Mode..." -msgstr "" +msgstr "Переключение клиентского режима Deluge..." #: deluge/ui/gtk3/preferences.py:943 #, python-format msgid "Do you want to restart to use %s mode?" -msgstr "" +msgstr "Хотите перезапустить deluge, чтобы использовать режим «%s»?" #: deluge/ui/gtk3/preferences.py:1154 msgid "Select the Plugin" @@ -2337,39 +2369,39 @@ msgstr "Выберите модуль" #: deluge/ui/gtk3/preferences.py:1170 msgid "Plugin Eggs" -msgstr "Модули Egg" +msgstr "Дополнение Eggs" #: deluge/ui/gtk3/preferences.py:1297 msgid "Server Side Error" -msgstr "" +msgstr "Ошибка на стороне сервера" #: deluge/ui/gtk3/preferences.py:1298 msgid "An error occurred on the server" -msgstr "" +msgstr "На сервере произошла ошибка" #: deluge/ui/gtk3/preferences.py:1368 deluge/ui/gtk3/preferences.py:1375 msgid "Error Adding Account" -msgstr "" +msgstr "Ошибка при добавлении аккаунта" #: deluge/ui/gtk3/preferences.py:1369 msgid "Authentication failed" -msgstr "" +msgstr "Сбой аутентификации" #: deluge/ui/gtk3/preferences.py:1376 msgid "An error occurred while adding account" -msgstr "" +msgstr "Произошла ошибка при добавлении аккаунта" #: deluge/ui/gtk3/preferences.py:1408 msgid "Error Updating Account" -msgstr "" +msgstr "Ошибка обновления аккаунта" #: deluge/ui/gtk3/preferences.py:1409 msgid "An error occurred while updating account" -msgstr "" +msgstr "Произошла ошибка при обновлении аккаунта" #: deluge/ui/gtk3/preferences.py:1427 msgid "Remove Account" -msgstr "" +msgstr "Удалить аккаунт" #: deluge/ui/gtk3/preferences.py:1429 #, python-format @@ -2377,18 +2409,19 @@ msgid "" "Are you sure you want to remove the account with the username " "\"%(username)s\"?" msgstr "" +"Действительно удалить учётную запись с именем пользователя «%(username)s»?" #: deluge/ui/gtk3/preferences.py:1441 deluge/ui/gtk3/preferences.py:1448 msgid "Error Removing Account" -msgstr "" +msgstr "Ошибка удаления аккаунта" #: deluge/ui/gtk3/preferences.py:1442 msgid "Auhentication failed" -msgstr "" +msgstr "Сбой аутентификации" #: deluge/ui/gtk3/preferences.py:1449 msgid "An error occurred while removing account" -msgstr "" +msgstr "Произошла ошибка при удалении учётной записи" #: deluge/ui/gtk3/filtertreeview.py:122 #: deluge/ui/web/js/deluge-all/FilterPanel.js:28 @@ -2406,7 +2439,7 @@ msgstr "Трекеры" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:7 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:33 msgid "None" -msgstr "Отсутствует" +msgstr "Нет" #: deluge/ui/gtk3/filtertreeview.py:137 msgid "Admin" @@ -2424,7 +2457,7 @@ msgstr "Без метки" #: deluge/ui/gtk3/filtertreeview.py:206 msgid "No Owner" -msgstr "" +msgstr "Нет владельца" #: deluge/ui/gtk3/new_release_dialog.py:60 msgid "<i>Client Version</i>" @@ -2440,16 +2473,16 @@ msgstr " Задание помещено в очередь" #: deluge/ui/gtk3/torrentview.py:421 msgid "Torrent is shared between other Deluge users or not." -msgstr "" +msgstr "Торрент общий для других пользователей Deluge или нет." #: deluge/ui/gtk3/removetorrentdialog.py:67 msgid "Remove the selected torrents?" -msgstr "" +msgstr "Удалить выбранные торренты?" #: deluge/ui/gtk3/removetorrentdialog.py:68 #, python-format msgid "Total of %s torrents selected" -msgstr "" +msgstr "Выбрано торрентов — %s" #: deluge/ui/gtk3/menubar.py:79 msgid "Set Unlimited" @@ -2461,7 +2494,7 @@ msgstr "Вкл." #: deluge/ui/gtk3/menubar.py:94 deluge/ui/web/js/deluge-all/Menus.js:265 msgid "Off" -msgstr "Выкл." +msgstr "Откл." #: deluge/ui/gtk3/menubar.py:101 msgid "Disable" @@ -2469,27 +2502,27 @@ msgstr "Отключить" #: deluge/ui/gtk3/menubar.py:104 msgid "Enable..." -msgstr "" +msgstr "Включить..." #: deluge/ui/gtk3/menubar.py:465 msgid "Peer Upload Slots" -msgstr "" +msgstr "Слоты отдачи для пира" #: deluge/ui/gtk3/menubar.py:466 msgid "Set the maximum upload slots" -msgstr "" +msgstr "Установить максимум слотов раздачи" #: deluge/ui/gtk3/menubar.py:471 msgid "Stop Seed At Ratio" -msgstr "" +msgstr "Остановить раздачу при рейтинге" #: deluge/ui/gtk3/menubar.py:606 msgid "Ownership Change Error" -msgstr "" +msgstr "Ошибка смены владельца" #: deluge/ui/gtk3/menubar.py:607 msgid "There was an error while trying changing ownership." -msgstr "" +msgstr "Произошла ошибка при смене владельца" #: deluge/ui/gtk3/peers_tab.py:91 #: deluge/ui/web/js/deluge-all/details/PeersTab.js:66 @@ -2503,13 +2536,15 @@ msgstr "Клиент" #: deluge/ui/gtk3/__init__.py:29 msgid "GTK Options" -msgstr "" +msgstr "Параметры GTK" #: deluge/ui/gtk3/__init__.py:36 msgid "" "Add one or more torrent files, torrent URLs or magnet URIs to a currently " "running Deluge GTK instance" msgstr "" +"Добавить один или несколько торрент-файлов, ссылки на торренты или магнет-" +"ссылки в запущенный экземпляр Deluge GTK" #: deluge/ui/gtk3/glade/create_torrent_dialog.progress.ui.h:1 msgid "Creating Torrent" @@ -2521,7 +2556,7 @@ msgstr "Задания в очереди" #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:4 msgid "Add Queued Torrents" -msgstr "" +msgstr "Добавить торренты в очередь" #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:5 #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:7 @@ -2533,7 +2568,7 @@ msgstr "_Удалить" #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:6 msgid "_Clear" -msgstr "" +msgstr "_Очистить" #: deluge/ui/gtk3/glade/queuedtorrents.ui.h:7 msgid "Automatically add torrents on connect" @@ -2556,7 +2591,7 @@ msgstr "_Создать торрент" #: deluge/ui/gtk3/glade/main_window.ui.h:4 msgid "Quit & _Shutdown Daemon" -msgstr "Выйти и _выключить демон" +msgstr "Выйти и _остановить службу" #: deluge/ui/gtk3/glade/main_window.ui.h:5 #: deluge/ui/gtk3/glade/tray_menu.ui.h:8 @@ -2572,7 +2607,7 @@ msgstr "_Правка" #: deluge/ui/gtk3/glade/main_window.ui.h:7 msgid "_Preferences" -msgstr "" +msgstr "_Параметры" #: deluge/ui/gtk3/glade/main_window.ui.h:8 msgid "_Connection Manager" @@ -2580,7 +2615,7 @@ msgstr "Управление _подключениями" #: deluge/ui/gtk3/glade/main_window.ui.h:9 msgid "_Torrent" -msgstr "_Задание" +msgstr "Т_оррент" #: deluge/ui/gtk3/glade/main_window.ui.h:10 msgid "_View" @@ -2608,7 +2643,7 @@ msgstr "_Колонки" #: deluge/ui/gtk3/glade/main_window.ui.h:16 msgid "_Find ..." -msgstr "" +msgstr "_Найти..." #: deluge/ui/gtk3/glade/main_window.ui.h:17 msgid "S_idebar" @@ -2624,7 +2659,7 @@ msgstr "Показывать _трекеры" #: deluge/ui/gtk3/glade/main_window.ui.h:20 msgid "Show _Owners" -msgstr "" +msgstr "Показывать _владельцев" #: deluge/ui/gtk3/glade/main_window.ui.h:21 msgid "_Help" @@ -2636,7 +2671,7 @@ msgstr "_Домашняя страница" #: deluge/ui/gtk3/glade/main_window.ui.h:23 msgid "_FAQ" -msgstr "_FAQ" +msgstr "_Частые вопросы" #: deluge/ui/gtk3/glade/main_window.ui.h:24 msgid "Frequently Asked Questions" @@ -2648,7 +2683,7 @@ msgstr "_Сообщество" #: deluge/ui/gtk3/glade/main_window.ui.h:26 msgid "_About" -msgstr "" +msgstr "_О программе" #: deluge/ui/gtk3/glade/main_window.ui.h:27 msgid "Add torrent" @@ -2677,14 +2712,16 @@ msgid "" "Filter torrents by name.\n" "This will filter torrents for the current selection on the sidebar." msgstr "" +"Отфильтровать торренты по имени.\n" +"Это отфильтрует торренты, выбранные на боковой панели." #: deluge/ui/gtk3/glade/main_window.ui.h:33 msgid "Filter" -msgstr "" +msgstr "Фильтр" #: deluge/ui/gtk3/glade/main_window.ui.h:34 msgid "Pause the selected torrents" -msgstr "Приостановить выбранные задания" +msgstr "Приостановить выбранные торренты" #: deluge/ui/gtk3/glade/main_window.ui.h:35 #: deluge/ui/web/js/deluge-all/Toolbar.js:54 @@ -2694,29 +2731,29 @@ msgstr "Приостановить" #: deluge/ui/gtk3/glade/main_window.ui.h:36 msgid "Resume the selected torrents" -msgstr "Продолжить выбранные задания" +msgstr "Возобновить выбранные торренты" #: deluge/ui/gtk3/glade/main_window.ui.h:37 #: deluge/ui/web/js/deluge-all/Toolbar.js:61 #: deluge/ui/web/js/deluge-all/Menus.js:59 msgid "Resume" -msgstr "Продолжить" +msgstr "Возобновить" #: deluge/ui/gtk3/glade/main_window.ui.h:38 msgid "Queue Torrent Up" -msgstr "На задание вперёд" +msgstr "Переместить торрент вперёд" #: deluge/ui/gtk3/glade/main_window.ui.h:39 msgid "Queue Up" -msgstr "В начало очереди" +msgstr "К началу очереди" #: deluge/ui/gtk3/glade/main_window.ui.h:40 msgid "Queue Torrent Down" -msgstr "На задание назад" +msgstr "Переместить торрент назад" #: deluge/ui/gtk3/glade/main_window.ui.h:41 msgid "Queue Down" -msgstr "В конец очереди" +msgstr "К концу очереди" #: deluge/ui/gtk3/glade/main_window.ui.h:42 #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:14 @@ -2741,19 +2778,19 @@ msgstr "Управление подключениями" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:211 #: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:86 msgid "Close" -msgstr "" +msgstr "Закрыть" #: deluge/ui/gtk3/glade/main_window.ui.h:45 msgid "Filter:" -msgstr "" +msgstr "Фильтр:" #: deluge/ui/gtk3/glade/main_window.ui.h:46 msgid "Clear the search" -msgstr "" +msgstr "Очистить поиск" #: deluge/ui/gtk3/glade/main_window.ui.h:47 msgid "_Match Case" -msgstr "" +msgstr "У_читывать регистр" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:1 #: deluge/ui/console/modes/preferences/preference_panes.py:383 @@ -2761,7 +2798,7 @@ msgstr "" #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:45 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:66 msgid "Forced" -msgstr "Форсированный" +msgstr "Принудительно" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:3 #: deluge/ui/console/modes/preferences/preference_panes.py:383 @@ -2769,7 +2806,7 @@ msgstr "Форсированный" #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:47 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:68 msgid "Disabled" -msgstr "Откл." +msgstr "Отключено" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:4 #: deluge/ui/console/modes/preferences/preference_panes.py:400 @@ -2781,7 +2818,7 @@ msgstr "Рукопожатие" #: deluge/ui/console/modes/preferences/preference_panes.py:400 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:88 msgid "Full Stream" -msgstr "" +msgstr "Весь поток" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:6 #: deluge/ui/console/modes/preferences/preference_panes.py:400 @@ -2792,17 +2829,17 @@ msgstr "Оба" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:8 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:34 msgid "Socks4" -msgstr "" +msgstr "Socks4" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:9 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:35 msgid "Socks5" -msgstr "" +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 Аутентификация" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:11 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:37 @@ -2812,28 +2849,28 @@ 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-аутентификация" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:13 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:39 msgid "I2P" -msgstr "" +msgstr "I2P" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:19 msgid "The standalone self-contained application" -msgstr "" +msgstr "Автономное приложение" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:20 msgid "Thin Client" -msgstr "" +msgstr "Тонкий клиент" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:21 msgid "Connect to a Deluge daemon (deluged)" -msgstr "" +msgstr "Подключаться к службе Deluge (deluged)" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:22 msgid "Application Mode" -msgstr "" +msgstr "Режим приложения" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:23 #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:46 @@ -2850,45 +2887,48 @@ msgid "" "will increase bandwidth use between client\n" "and daemon (does not apply in Standalone mode)." msgstr "" +"Панель частей\n" +"увеличит использование канала между клиентом\n" +"и службой (это не относится к автономному режиму)." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:28 msgid "Show a pieces bar in Status tab" -msgstr "" +msgstr "Показывать панель частей на вкладке «Состояние»" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:29 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:25 #: deluge/ui/web/render/tab_status.html:27 msgid "Completed:" -msgstr "" +msgstr "Завершён:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:30 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:72 msgid "Downloading:" -msgstr "" +msgstr "Загружается:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:31 msgid "Waiting:" -msgstr "" +msgstr "Ожидающие:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:32 msgid "Missing:" -msgstr "" +msgstr "Отсутствующие:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:33 msgid "_Revert" -msgstr "" +msgstr "_Восстановить" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:34 msgid "Revert color to default" -msgstr "" +msgstr "Восстановить цвет по умолчанию" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:35 msgid "Piece Colors" -msgstr "" +msgstr "Цвета частей" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:36 msgid "Main Window" -msgstr "" +msgstr "Главное окно" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:37 msgid "Enable system tray icon" @@ -2896,11 +2936,11 @@ msgstr "Показывать значок в области уведомлени #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:38 msgid "App Indicator" -msgstr "" +msgstr "App Indicator" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:39 msgid "Systray" -msgstr "" +msgstr "Системный трей" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:40 msgid "Minimize to tray on close" @@ -2916,25 +2956,25 @@ msgstr "Защитить паролем значок в области увед #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:44 msgid "System Tray" -msgstr "" +msgstr "Системный трей" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:45 msgid "Notify about new releases" -msgstr "" +msgstr "Уведомлять о новых выпусках" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:46 #: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:38 msgid "Updates" -msgstr "" +msgstr "Обновления" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:47 #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:235 msgid "System Default" -msgstr "" +msgstr "Системный по умолчанию" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:48 msgid "<b>Language</b>" -msgstr "" +msgstr "<b>Язык</b>" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:49 #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:16 @@ -2966,7 +3006,7 @@ msgstr "Загружать в:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:54 msgid "Download Folders" -msgstr "" +msgstr "Папки для загрузок" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:55 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:93 @@ -2983,7 +3023,7 @@ msgstr "" #: deluge/ui/console/modes/preferences/preference_panes.py:287 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:102 msgid "Sequential download" -msgstr "" +msgstr "Последовательная загрузка" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:58 #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:15 @@ -2995,24 +3035,30 @@ msgid "" "distribution negatively in the swarm. It should be\n" "used sparingly." msgstr "" +"Когда включено, части будут выбираться\n" +"последовательно, а не сначала самые редкие.\n" +"\n" +"Последовательная загрузка отрицательно влияет\n" +"на распространение частей в раздаче. Её следует\n" +"использовать в редких случаях." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:64 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:111 msgid "Add torrents in Paused state" -msgstr "Добавлять задания приостановленными" +msgstr "Добавлять торренты в приостановленном состоянии" #: 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 "Резервировать место на диске" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:66 msgid "Pre-allocate the disk space for the torrent files" -msgstr "" +msgstr "Резервировать место на диске для загружаемых файлов" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:67 msgid "Add Torrent Options" -msgstr "" +msgstr "Добавление торрента" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:68 msgid "Always show" @@ -3024,19 +3070,19 @@ msgstr "Сделать диалоговое окно активным" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:70 msgid "Add Torrents Dialog" -msgstr "" +msgstr "Диалоговое окно «Добавить торренты»" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:71 msgid "Connection Attempts per Second:" -msgstr "" +msgstr "Попыток соединения в секунду:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:72 msgid "Half-Open Connections:" -msgstr "" +msgstr "Полуоткрытые соединения:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:73 msgid "The maximum number of connections allowed. Set -1 for unlimited." -msgstr "Максимально допустимое число соединений. -1 означает неограниченное." +msgstr "Максимум допустимых соединений. «-1» — неограниченно." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:74 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:42 @@ -3048,7 +3094,7 @@ msgstr "Соединения:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:75 msgid "The maximum upload slots for all torrents. Set -1 for unlimited." -msgstr "Лимит числа слотов раздачи. -1 означает без ограничений." +msgstr "Максимум допустимых соединений отдачи. «-1» — неограниченно." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:76 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:43 @@ -3070,14 +3116,13 @@ msgstr "Скорость загрузки:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:79 msgid "The maximum upload speed for all torrents. Set -1 for unlimited." -msgstr "" -"Лимит скорости раздачи для всех загрузок. -1 означает без ограничений." +msgstr "Максимум скорости отдачи для всех торрентов. «-1» — без ограничений." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:81 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:39 #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:6 msgid "Upload Speed:" -msgstr "Скорость раздачи:" +msgstr "Скорость отдачи:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:82 #: deluge/ui/console/modes/preferences/preference_panes.py:458 @@ -3100,11 +3145,11 @@ msgstr "" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:85 msgid "Global Bandwidth Limits" -msgstr "" +msgstr "Глобальные ограничения пропускной способности" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:86 msgid "The maximum upload slots per torrent. Set -1 for unlimited." -msgstr "Лимит числа слотов раздачи на загрузку. -1 означает без ограничений." +msgstr "Максимум слотов отдачи на торрент. «-1» — без ограничений." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:87 msgid "The maximum number of connections per torrent. Set -1 for unlimited." @@ -3114,62 +3159,66 @@ msgstr "" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:88 msgid "The maximum number download speed per torrent. Set -1 for unlimited." msgstr "" +"Максимальная скорость загрузки для торрента. Установите -1 для " +"неограниченной." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:89 msgid "The maximum upload speed per torrent. Set -1 for unlimited." -msgstr "Лимит скорости раздачи на загрузку. -1 означает без ограничений." +msgstr "Максимум скорости отдачи на торрент. «-1» — без ограничений." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:90 msgid "Per-Torrent Bandwidth Limits" -msgstr "" +msgstr "Ограничения пропускной способности для торрента" #: 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 "Добавлять в начало очереди" #: 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 "Новые торренты" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:93 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:85 msgid "Seeding:" -msgstr "" +msgstr "Раздачи:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:94 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:59 msgid "Total:" -msgstr "" +msgstr "Всего:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:95 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:102 msgid "Ignore slow torrents" -msgstr "" +msgstr "Игнорировать медленные торренты" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:96 msgid "" "Torrents not transfering any data do not count towards download/seeding " "active count." msgstr "" +"Торренты, не передающие данные, не учитываются в количестве активных " +"загрузок и раздач." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:97 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:111 msgid "Prefer seeding torrents" -msgstr "" +msgstr "Приоритет раздающих торрентов" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:98 msgid "Give preference to seeding torrents over downloading torrents." -msgstr "" +msgstr "Предпочесть раздающие торренты вместо скачиваемых." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:99 #: deluge/ui/console/modes/preferences/preference_panes.py:558 #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:50 msgid "Active Torrents" -msgstr "" +msgstr "Активные торренты" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:100 #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:7 @@ -3177,44 +3226,46 @@ 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 msgid "Time (m):" -msgstr "" +msgstr "Длительность (мин):" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:103 #: 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" -msgstr "" +msgstr "Приостановить торрент" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:106 #: 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 "" "The IP address of the interface to listen for incoming bittorrent " "connections on. Leave this empty if you want to use the default." msgstr "" +"IP-адрес интерфейса для прослушивания входящих bittorrent соединений. " +"Оставьте это поле пустым, если хотите использовать значение по умолчанию." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:108 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:38 msgid "Incoming Address" -msgstr "" +msgstr "Входящий адрес" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:109 msgid "Random" @@ -3222,7 +3273,7 @@ msgstr "Случайно" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:110 msgid "Uses random ports in range 49152 to 65525" -msgstr "" +msgstr "Использует случайные порты из диапазона от 49152 до 65525" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:111 msgid "Active Port:" @@ -3235,7 +3286,7 @@ msgstr "Проверить активный порт" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:113 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:58 msgid "Incoming Port" -msgstr "" +msgstr "Входящий порт" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:114 msgid "" @@ -3244,12 +3295,16 @@ msgid "" "connections. (Leave empty for default.)\n" " " msgstr "" +"\n" +"Имя сетевого интерфейса или IP-адрес для исходящих BitTorrent соединений. " +"(Оставьте пустым для значений по умолчанию.)\n" +" " #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:117 #: deluge/ui/console/modes/preferences/preference_panes.py:359 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:101 msgid "Outgoing Interface" -msgstr "" +msgstr "Исходящий интерфейс" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:118 #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:11 @@ -3266,17 +3321,17 @@ msgstr "По:" #: deluge/ui/console/modes/preferences/preference_panes.py:328 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:120 msgid "Outgoing Ports" -msgstr "" +msgstr "Исходящие порты" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:121 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:59 msgid "Outgoing:" -msgstr "" +msgstr "Исходящее:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:122 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:38 msgid "Incoming:" -msgstr "" +msgstr "Входящее:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:123 #: deluge/ui/web/js/deluge-all/preferences/EncryptionPage.js:80 @@ -3314,7 +3369,7 @@ msgstr "Обмен узлами" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:130 msgid "Exchanges peers between clients. (Disabling requires restart)" -msgstr "" +msgstr "Обмен участниками между клиентами. (Отключение требует перезапуска)" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:131 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:223 @@ -3323,7 +3378,9 @@ msgstr "LSD" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:132 msgid "Local Service Discovery finds local peers on your network." -msgstr "Local Service Discovery находит узлы в местной сети." +msgstr "" +"Обнаружение локальных служб (Local Service Discovery) находит участников в " +"локальной сети." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:133 #: deluge/ui/console/widgets/statusbars.py:118 @@ -3346,7 +3403,7 @@ msgstr "Байт узла:" #: deluge/ui/console/modes/preferences/preference_panes.py:372 #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:181 msgid "Network Extras" -msgstr "" +msgstr "Дополнительные сетевые параметры" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:137 #: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:4 @@ -3370,55 +3427,59 @@ msgstr "Порт:" #: deluge/ui/console/modes/preferences/preference_panes.py:658 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:94 msgid "Proxy Hostnames" -msgstr "" +msgstr "Использовать прокси для имён хостов" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:141 msgid "" "Hostnames should be attempted to be resolved through\n" "the proxy instead of using the local DNS service" msgstr "" +"Имена хостов следует пытаться разрешать через прокси\n" +"вместо использования локальной службы DNS." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:143 #: deluge/ui/console/modes/preferences/preference_panes.py:661 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:103 msgid "Proxy Peers" -msgstr "" +msgstr "Использовать прокси для пиров" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:144 msgid "Proxy peer and web seed connections." -msgstr "" +msgstr "Использовать прокси для соединений с узлами и веб-раздачами." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:145 #: deluge/ui/console/modes/preferences/preference_panes.py:665 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:112 msgid "Proxy Trackers" -msgstr "" +msgstr "Использовать прокси для трекеров" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:147 msgid "Force Proxy Use" -msgstr "" +msgstr "Использовать прокси принудительно" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:148 #: 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 "" "Attempt to hide client identity and only use proxy for incoming connections." msgstr "" +"Попытаться скрыть данные клиента и использовать прокси только для входящих " +"соединений." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:150 #: deluge/ui/console/modes/preferences/preference_panes.py:668 #: deluge/ui/console/modes/preferences/preference_panes.py:669 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:120 msgid "Force Proxy" -msgstr "" +msgstr "Прокси принудительно" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:151 msgid "Cache Size (16 KiB blocks):" -msgstr "Размер кэша (в блоках по 16 КБ):" +msgstr "Размер кэша (блоков по 16 КиБ):" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:152 msgid "" @@ -3440,14 +3501,14 @@ 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 "" "The total number of 16 KiB blocks written to disk since this session was " "started." msgstr "" -"Количество блоков по 16 КБ, записанных на диск с момента начала сессии." +"Количество блоков по 16 КиБ, записанных на диск с начала текущего сеанса." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:156 msgid "Blocks Written:" @@ -3457,9 +3518,7 @@ msgstr "Блоков записано:" msgid "" "The total number of write operations performed since this session was " "started." -msgstr "" -"Общее количество выполненных операций записи с момента запуска текущей " -"сессии." +msgstr "Общее число операций записи, выполненных с начала текущего сеанса." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:158 msgid "Writes:" @@ -3471,25 +3530,25 @@ msgid "" "of saved write operations per total write operations, i.e. a kind of cache " "hit ratio for the write cache." msgstr "" -"Соотношение (блоков_записано - операций_записи) / блоков_записано " -"представляет отношение количества сохраненных операций записи к их общему " -"количеству, т.е. эффективность кэша записи." +"Соотношение «(блоков_записано - операций_записи) / блоков_записано» " +"представляет собой отношение количества сэкономленных операций записи к их " +"общему количеству, т. е. коэффициент эффективности кэша записи." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:160 msgid "Write Cache Hit Ratio:" -msgstr "Процент попаданий в кэш:" +msgstr "Коэффициент эффективности кэша записи:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:161 #: deluge/ui/console/modes/preferences/preference_panes.py:709 msgid "Write" -msgstr "" +msgstr "Запись" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:162 msgid "" "The number of blocks that were requested from the bittorrent engine (from " "peers), that were served from disk or cache." msgstr "" -"Количество блоков, запрошенных у движка BitTorrent (от узлов), полученных с " +"Количество блоков, запрошенных у движка BitTorrent (от узлов) и полученных с " "диска или из кэша." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:163 @@ -3510,13 +3569,13 @@ msgstr "Коэффициент эффективности кэша чтения. #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:167 msgid "Read Cache Hit Ratio:" -msgstr "Процент чтения из кэша:" +msgstr "Коэффициент эффективности кэша чтения:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:168 msgid "" "The total number of read operations performed since this session was started." msgstr "" -"Общее количество операций чтения, выполненных с начала данной сессии." +"Общее количество операций чтения, выполненных с начала текущего сеанса." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:169 msgid "Reads:" @@ -3525,15 +3584,15 @@ msgstr "Операций чтения:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:170 #: deluge/ui/console/modes/preferences/preference_panes.py:723 msgid "Read" -msgstr "" +msgstr "Чтение" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:171 msgid "" "The number of 16 KiB blocks currently in the disk cache. This includes both " "read and write cache." msgstr "" -"Количество блоков по 16 КБ, находящихся сейчас в дисковом кэше. Включает кэш " -"чтения и записи." +"Количество блоков по 16 КиБ, находящихся сейчас в дисковом кэше. Включает " +"кэш чтения и записи." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:172 msgid "Cache Size:" @@ -3546,16 +3605,16 @@ msgstr "Размер кэша чтения:" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:175 #: deluge/ui/gtk3/glade/connection_manager.ui.h:7 msgid "_Refresh" -msgstr "" +msgstr "О_бновить" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:177 msgid "" "Help us improve Deluge by sending us your Python version, PyGTK version, OS " "and processor types. Absolutely no other information is sent." msgstr "" -"Помогите нам сделать Deluge лучше, автоматически отправляя отчёт о версии " -"используемых Python, PyGTK, ОС и типе процессора. Никакая другая информация " -"не отсылается." +"Помогите нам сделать Deluge лучше, отправляя сведения об используемых " +"версиях Python, PyGTK, а также о типах ОС и процессора. Никакая другая " +"информация не отправляется." #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:178 #: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:77 @@ -3566,7 +3625,7 @@ msgstr "Отправлять анонимную статистику" #: deluge/ui/console/modes/preferences/preference_panes.py:503 #: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:57 msgid "System Information" -msgstr "" +msgstr "Информация о системе" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:180 msgid "Location:" @@ -3584,15 +3643,15 @@ msgstr "" #: deluge/ui/console/modes/preferences/preference_panes.py:516 #: deluge/ui/web/js/deluge-all/preferences/OtherPage.js:85 msgid "GeoIP Database" -msgstr "" +msgstr "База данных GeoIP" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:183 msgid "Associate with Deluge" -msgstr "" +msgstr "Ассоциировать с Deluge" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:184 msgid "Magnet Links" -msgstr "" +msgstr "Магнет-ссылки" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:185 #: deluge/ui/web/js/deluge-all/preferences/DaemonPage.js:37 @@ -3625,11 +3684,11 @@ msgstr "Периодически проверять веб-сайт на нал #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:193 msgid "_Delete" -msgstr "" +msgstr "_Удалить" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:194 msgid "Accounts" -msgstr "" +msgstr "Учётные записи" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:196 #: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:29 @@ -3659,23 +3718,23 @@ msgstr "Информация" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:201 msgid "_Install" -msgstr "" +msgstr "_Установить" #: deluge/ui/gtk3/glade/preferences_dialog.ui.h:202 msgid "_Find More..." -msgstr "" +msgstr "_Найти ещё на веб-сайте Deluge..." #: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:4 msgid "Remove the selected torrent(s)?" -msgstr "" +msgstr "Удалить выбранный торрент(ы)?" #: deluge/ui/gtk3/glade/remove_torrent_dialog.ui.h:5 msgid "Include downloaded files" -msgstr "" +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" @@ -3687,11 +3746,11 @@ msgstr "имя_узла:порт" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:1 msgid "Properties" -msgstr "" +msgstr "Свойства" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:3 msgid "Max drop down rows" -msgstr "" +msgstr "Макс. количество строк в выпадающем списке" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:4 #: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:2 @@ -3701,87 +3760,87 @@ 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" -msgstr "" +msgstr "Показывать кнопку для выбора папки" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:7 msgid "Show folder name" -msgstr "" +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" -msgstr "" +msgstr "Использовать автодополнение" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:10 msgid "Show hidden files" -msgstr "" +msgstr "Показывать скрытые файлы" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:11 msgid "Set new key" -msgstr "" +msgstr "Назначить комбинацию" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:12 msgid "Press this key to set new key accelerators to trigger auto-complete" -msgstr "" +msgstr "Нажмите для назначения новой комбинации клавиш для автодополнения" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:13 msgid "Autocomplete" -msgstr "" +msgstr "Автодополнение" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:14 msgid "Save path" -msgstr "" +msgstr "Сохранить путь" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:15 msgid "Ctrl+S" -msgstr "" +msgstr "Ctrl+S" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:16 msgid "Ctrl+E" -msgstr "" +msgstr "Ctrl+E" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:17 msgid "Ctrl+R" -msgstr "" +msgstr "Ctrl+R" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:18 msgid "Ctrl+H" -msgstr "" +msgstr "Ctrl+H" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:19 msgid "Ctrl+D" -msgstr "" +msgstr "Ctrl+D" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:22 msgid "Toggle hidden files" -msgstr "" +msgstr "Показать скрытые файлы" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:23 msgid "Default path" -msgstr "" +msgstr "Путь по умолчанию" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:24 msgid "Shortcuts" -msgstr "" +msgstr "Комбинации клавиш" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:25 msgid "Select a Directory" -msgstr "" +msgstr "Выберите папку" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:26 msgid "Saved paths" -msgstr "" +msgstr "Сохранённые пути" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:27 msgid "column" -msgstr "" +msgstr "столбец" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:29 #: deluge/ui/console/modes/preferences/preferences.py:145 @@ -3797,7 +3856,7 @@ msgstr "Отменить" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:30 msgid "Open" -msgstr "" +msgstr "Открыть" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:31 #: deluge/ui/web/js/deluge-all/Toolbar.js:39 @@ -3812,18 +3871,18 @@ msgstr "Добавить" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:32 msgid "Add the current entry value to the list" -msgstr "" +msgstr "Добавить путь из поля ввода в список" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:33 #: deluge/ui/web/js/deluge-all/EditTrackersWindow.js:98 #: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:33 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:102 msgid "Edit" -msgstr "" +msgstr "Изменить" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:34 msgid "Edit the selected entry" -msgstr "" +msgstr "Изменить выбранный путь" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:35 #: deluge/ui/web/js/deluge-all/Toolbar.js:46 @@ -3835,27 +3894,27 @@ msgstr "Удалить" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:36 msgid "Remove the selected entry" -msgstr "" +msgstr "Удалить выбранный путь" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:38 msgid "Move the selected entry up" -msgstr "" +msgstr "Переместить выбранный путь выше" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:40 msgid "Move the selected entry down" -msgstr "" +msgstr "Переместить выбранный путь ниже" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:41 msgid "Default" -msgstr "" +msgstr "По умолчанию" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:42 msgid "No default path set" -msgstr "" +msgstr "Путь по умолчанию не задан" #: deluge/ui/gtk3/glade/path_combo_chooser.ui.h:43 msgid "Open properties dialog" -msgstr "" +msgstr "Открыть диалоговое окно «Свойства»" #: deluge/ui/gtk3/glade/add_torrent_dialog.infohash.ui.h:1 msgid "Add Infohash" @@ -3863,7 +3922,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:" @@ -3878,17 +3937,17 @@ msgstr "Трекеры:" #: deluge/ui/gtk3/glade/connection_manager.addhost.ui.h:1 #: deluge/ui/console/modes/connectionmanager.py:51 msgid "Add Host" -msgstr "Добавить сервер" +msgstr "Добавить хост" #: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:1 #: deluge/ui/web/js/deluge-all/MoveStorage.js:16 #: deluge/ui/web/js/deluge-all/Menus.js:346 msgid "Move Download Folder" -msgstr "" +msgstr "Изменить папку загрузки" #: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:4 msgid "Move the torrent(s) download folder." -msgstr "" +msgstr "Изменить папку загрузки торрента(ов)." #: deluge/ui/gtk3/glade/move_storage_dialog.ui.h:5 msgid "Destination:" @@ -3904,19 +3963,19 @@ msgstr "_Перейти на веб-сайт" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:4 msgid "New Release Available!" -msgstr "" +msgstr "Доступна новая версия!" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:5 msgid "Available Version:" -msgstr "" +msgstr "Доступная версия:" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:6 msgid "Server Version" -msgstr "" +msgstr "Версия сервера" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:7 msgid "Current Version:" -msgstr "" +msgstr "Текущая версия:" #: deluge/ui/gtk3/glade/main_window.new_release.ui.h:8 msgid "Do not show this dialog in the future" @@ -3926,108 +3985,108 @@ msgstr "Больше не показывать это окно" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:26 #: deluge/ui/web/render/tab_status.html:9 msgid "Down Speed:" -msgstr "" +msgstr "Скорость загрузки:" #: 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 "Скорость отдачи:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:3 #: deluge/ui/web/render/tab_status.html:2 msgid "Downloaded:" -msgstr "" +msgstr "Загружено:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:4 #: deluge/ui/web/render/tab_status.html:3 msgid "Uploaded:" -msgstr "" +msgstr "Отдано:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:5 #: deluge/ui/web/render/tab_status.html:16 msgid "Seeds:" -msgstr "" +msgstr "Сиды:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:6 #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:10 #: deluge/ui/web/render/tab_status.html:17 msgid "Peers:" -msgstr "" +msgstr "Пиры:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:8 #: deluge/ui/web/render/tab_status.html:18 msgid "Availability:" -msgstr "" +msgstr "Доступно:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:9 #: deluge/ui/web/render/tab_status.html:25 msgid "Seed Rank:" -msgstr "" +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 msgid "Active Time:" -msgstr "" +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 msgid "Seeding Time:" -msgstr "" +msgstr "Время раздачи:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:16 #: deluge/ui/web/render/tab_status.html:12 msgid "Pieces:" -msgstr "" +msgstr "Частей:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:17 #: deluge/plugins/Label/deluge_label/data/label_add.ui.h:3 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:23 msgid "Name:" -msgstr "Имя:" +msgstr "Название:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:18 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:25 msgid "Download Folder:" -msgstr "" +msgstr "Папка загрузки:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:19 msgid "Added:" -msgstr "" +msgstr "Добавлен:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:20 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:26 msgid "Total Size:" -msgstr "" +msgstr "Общий размер:" #: 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 "Файлов:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:22 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:24 msgid "Hash:" -msgstr "" +msgstr "Хеш:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:23 #: deluge/ui/web/js/deluge-all/details/DetailsTab.js:31 msgid "Created By:" -msgstr "" +msgstr "Создан в:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:24 #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:17 @@ -4036,7 +4095,7 @@ msgstr "Комментарии:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:29 msgid "Owner:" -msgstr "" +msgstr "Владелец:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:34 msgid "Move completed:" @@ -4047,40 +4106,40 @@ msgstr "Перемещать завершённые" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:12 #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:205 msgid "Stop seed at ratio:" -msgstr "Остановить раздачу при рейтинге:" +msgstr "Останавливать раздачу при рейтинге:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:37 #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:40 #: 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" -msgstr "" +msgstr "Ограничения пропускной способности" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:46 msgid "Current Tracker:" -msgstr "" +msgstr "Текущий трекер:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:47 msgid "Total Trackers:" -msgstr "" +msgstr "Всего трекеров:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:48 #: deluge/ui/web/render/tab_status.html:6 msgid "Tracker Status:" -msgstr "" +msgstr "Статус трекера:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:49 #: deluge/ui/web/render/tab_status.html:5 msgid "Next Announce:" -msgstr "" +msgstr "Следующий анонс:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:50 msgid "Private Torrent:" -msgstr "" +msgstr "Приватный торрент:" #: deluge/ui/gtk3/glade/main_window.tabs.ui.h:51 #: deluge/ui/gtk3/glade/torrent_menu.ui.h:8 @@ -4091,7 +4150,7 @@ msgstr "_Изменить трекеры" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:44 #: deluge/ui/web/js/deluge-all/Menus.js:284 msgid "Top" -msgstr "Вверх" +msgstr "В начало" #: deluge/ui/gtk3/glade/torrent_menu.queue.ui.h:4 #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:45 @@ -4102,7 +4161,7 @@ msgstr "В конец" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:1 #: deluge/ui/web/js/deluge-all/add/AddWindow.js:50 msgid "Add Torrents" -msgstr "Добавить задания" +msgstr "Добавить торренты" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:5 msgid "_URL" @@ -4110,11 +4169,11 @@ msgstr "_Ссылка" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:6 msgid "Info_hash" -msgstr "Хеш _данных" +msgstr "_Хеш данных" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:11 msgid "Move Complete Folder" -msgstr "" +msgstr "Папка для завершённых загрузок" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:12 msgid "Add In _Paused State" @@ -4129,32 +4188,32 @@ msgstr "Приоритет у первой/последней частей" #: 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 "Пропустить проверку хеша" #: 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 "Резервировать место на диске" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:24 msgid "Preallocate the disk space for the torrent files" -msgstr "" +msgstr "Резервировать место на диске для загружаемых файлов" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:25 msgid "Maximum torrent download speed" -msgstr "" +msgstr "Максимальная скорость загрузки торрентов" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:27 msgid "Maximum torrent upload speed" -msgstr "" +msgstr "Максимальная скорость раздачи торрентов" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:29 msgid "Maximum torrent connections" -msgstr "" +msgstr "Максимальное количество соединений для торрента" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:31 msgid "Maximum torrent upload slots" -msgstr "" +msgstr "Максимальное количество слотов раздачи для торрента" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:34 msgid "Apply To All" @@ -4162,7 +4221,7 @@ msgstr "Применить ко всем" #: deluge/ui/gtk3/glade/add_torrent_dialog.ui.h:35 msgid "Revert To Defaults" -msgstr "Вернуться к настройкам по умолчанию" +msgstr "Восстановить параметры по умолчанию" #: deluge/ui/gtk3/glade/tray_menu.ui.h:1 msgid "_Show Deluge" @@ -4170,11 +4229,11 @@ msgstr "_Показать Deluge" #: deluge/ui/gtk3/glade/tray_menu.ui.h:3 msgid "_Pause Session" -msgstr "" +msgstr "П_риостановить сеанс" #: deluge/ui/gtk3/glade/tray_menu.ui.h:4 msgid "_Resume Session" -msgstr "" +msgstr "_Возобновить сеанс" #: deluge/ui/gtk3/glade/tray_menu.ui.h:5 #: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:1 @@ -4184,7 +4243,7 @@ msgstr "Ограничение скорости _загрузки" #: deluge/ui/gtk3/glade/tray_menu.ui.h:6 #: deluge/ui/gtk3/glade/torrent_menu.options.ui.h:2 msgid "_Upload Speed Limit" -msgstr "_Oграничение скорости раздачи" +msgstr "_Oграничение скорости отдачи" #: deluge/ui/gtk3/glade/tray_menu.ui.h:7 msgid "Quit & Shutdown Daemon" @@ -4200,16 +4259,16 @@ msgstr "Изменить трекеры" #: deluge/ui/gtk3/glade/edit_trackers.ui.h:4 #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:19 msgid "_Up" -msgstr "" +msgstr "_Вверх" #: deluge/ui/gtk3/glade/edit_trackers.ui.h:8 #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:22 msgid "_Down" -msgstr "" +msgstr "В_низ" #: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:1 msgid "_Add Peer" -msgstr "_Добавить пира" +msgstr "_Добавить узел" #: deluge/ui/gtk3/glade/main_window.tabs.menu_peer.ui.h:2 msgid "Add a peer by its IP" @@ -4232,7 +4291,7 @@ msgstr "Введите удалённый путь" #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:4 msgid "Remote Path" -msgstr "" +msgstr "Удалённый путь" #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_path.ui.h:5 #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:5 @@ -4242,43 +4301,43 @@ msgstr "Путь:" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:1 msgid "32 KiB" -msgstr "" +msgstr "32 КиБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:2 msgid "64 KiB" -msgstr "" +msgstr "64 КиБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:3 msgid "128 KiB" -msgstr "" +msgstr "128 КиБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:4 msgid "256 KiB" -msgstr "" +msgstr "256 КиБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:5 msgid "512 KiB" -msgstr "" +msgstr "512 КиБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:6 msgid "1 MiB" -msgstr "" +msgstr "1 МиБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:7 msgid "2 MiB" -msgstr "" +msgstr "2 МиБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:8 msgid "4 MiB" -msgstr "" +msgstr "4 МиБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:9 msgid "8 MiB" -msgstr "" +msgstr "8 МиБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:10 msgid "16 MiB" -msgstr "" +msgstr "16 МиБ" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:11 msgid "Create Torrent" @@ -4301,7 +4360,7 @@ msgstr "Файлы" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:24 msgid "Webseeds" -msgstr "Веб-ресурсы" +msgstr "Веб-сиды" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:25 msgid "Piece Size:" @@ -4313,7 +4372,7 @@ msgstr "Установить флаг приватности" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:27 msgid "Add this torrent to the session" -msgstr "Добавить задание к выполняющимся" +msgstr "Добавить торрент в очередь" #: deluge/ui/gtk3/glade/create_torrent_dialog.ui.h:28 #: deluge/ui/console/modes/preferences/preference_panes.py:279 @@ -4323,7 +4382,7 @@ msgstr "Добавить задание к выполняющимся" #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:80 #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:17 msgid "Options" -msgstr "Настройки" +msgstr "Параметры" #: deluge/ui/gtk3/glade/create_torrent_dialog.remote_save.ui.h:1 msgid "Save .torrent as" @@ -4331,11 +4390,11 @@ msgstr "Сохранить .torrent как" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:1 msgid "_Open Download Folder" -msgstr "" +msgstr "_Открыть папку загрузки" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:2 msgid "_Pause" -msgstr "_Пауза" +msgstr "_Приостановить" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:3 msgid "Resu_me" @@ -4344,31 +4403,31 @@ msgstr "_Возобновить" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:4 #: deluge/ui/gtk3/glade/filtertree_menu.ui.h:4 msgid "Resume selected torrents." -msgstr "Возобновить выбранные задания." +msgstr "Возобновить выбранные торренты." #: deluge/ui/gtk3/glade/torrent_menu.ui.h:5 msgid "Opt_ions" -msgstr "Параметры" +msgstr "П_араметры" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:6 msgid "_Queue" -msgstr "_Очередь" +msgstr "О_чередь" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:7 msgid "_Update Tracker" -msgstr "_Обновить трекер" +msgstr "О_бновить трекер" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:9 msgid "_Remove Torrent" -msgstr "_Удалить задание" +msgstr "_Удалить торрент" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:10 msgid "_Force Re-check" -msgstr "_Перепроверить данные" +msgstr "П_ерепроверить данные" #: deluge/ui/gtk3/glade/torrent_menu.ui.h:11 msgid "_Move Download Folder" -msgstr "" +msgstr "И_зменить папку загрузки" #: deluge/ui/gtk3/glade/other_dialog.ui.h:3 msgid "label" @@ -4396,7 +4455,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" @@ -4404,11 +4463,11 @@ 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" -msgstr "" +msgstr "С_менить владельца" #: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:1 #: deluge/ui/web/js/deluge-all/AddTrackerWindow.js:26 @@ -4417,15 +4476,15 @@ msgstr "Добавить трекер" #: deluge/ui/gtk3/glade/edit_trackers.add.ui.h:4 msgid "Add Trackers" -msgstr "" +msgstr "Добавить трекеры" #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:1 msgid "Add URL" -msgstr "Добавить URL" +msgstr "Добавить ссылку" #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:4 msgid "From URL" -msgstr "" +msgstr "Ссылка" #: deluge/ui/gtk3/glade/add_torrent_dialog.url.ui.h:5 #: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:1 @@ -4434,31 +4493,31 @@ msgstr "Ссылка:" #: deluge/ui/gtk3/glade/connection_manager.ui.h:9 msgid "Deluge Daemons" -msgstr "" +msgstr "Службы Deluge" #: deluge/ui/gtk3/glade/connection_manager.ui.h:10 msgid "Auto-connect to selected Daemon" -msgstr "" +msgstr "Автоматически подключаться к выбранной службе" #: deluge/ui/gtk3/glade/connection_manager.ui.h:11 msgid "Auto-start localhost daemon (if required)" -msgstr "" +msgstr "Автоматически запускать локальную службу, если она ещё не запущена" #: deluge/ui/gtk3/glade/connection_manager.ui.h:12 msgid "Hide this dialog" -msgstr "" +msgstr "Не показывать это диалоговое окно" #: deluge/ui/gtk3/glade/connection_manager.ui.h:13 msgid "Startup Options" -msgstr "" +msgstr "Параметры запуска" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:1 msgid "_Open File" -msgstr "" +msgstr "_Открыть файл" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:2 msgid "_Show Folder" -msgstr "" +msgstr "_Показать папку" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:3 msgid "_Expand All" @@ -4466,30 +4525,32 @@ msgstr "_Развернуть всё" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:4 msgid "_Skip" -msgstr "" +msgstr "П_ропустить" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:5 msgid "_Low" -msgstr "" +msgstr "_Низкий" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:6 msgid "_Normal" -msgstr "" +msgstr "О_бычный" #: deluge/ui/gtk3/glade/main_window.tabs.menu_file.ui.h:7 msgid "_High" -msgstr "" +msgstr "_Высокий" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" -msgstr "" +msgstr "Команда Deluge" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" +"Deluge — небольшой свободный кросс-платформенный клиент файлообменной сети " +"BitTorrent." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4497,14 +4558,25 @@ msgid "" "Deluge heavily utilises the libtorrent library it has a comprehensive list " "of the features provided." msgstr "" +"Deluge предоставляет общие возможности для клиентов сети BitTorrent, такие " +"как шифрование протокола, DHT, поиск участников в локальной сети (LPD), " +"обмен участниками (PEX), UPnP, NAT-PMP, поддержка прокси, веб-раздачи, " +"ограничение скорости глобально и для отдельных торрентов. Deluge активно " +"использует библиотеку libtorrent, поэтому он имеет обширный набор " +"возможностей." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " "handles all the BitTorrent activity and is able to run on headless machines " "with the user-interfaces connecting remotely from any other platform." msgstr "" +"Deluge спроектирован для работы как в качестве обычного автономного " +"настольного приложения, так и в качестве клиент-сервера. В режиме тонкого " +"клиента служба Deluge обрабатывает всю активность в сети BitTorrent и может " +"работать на машинах без мониторов с пользовательскими интерфейсами, " +"подключающимися удалённо с любой другой платформы." #: deluge/ui/data/share/applications/deluge.desktop.in.h:2 msgid "BitTorrent Client" @@ -4520,159 +4592,172 @@ msgstr "Загружайте и обменивайтесь файлами в с #: deluge/ui/console/console.py:76 msgid "Console Options" -msgstr "" +msgstr "Параметры командной строки" #: deluge/ui/console/console.py:78 msgid "" "These daemon connect options will be used for commands, or if console ui " "autoconnect is enabled." msgstr "" +"Эти параметры подключения к службе будут использоваться для команд, или " +"если\n" +"включено автоматическое подключение текстового пользовательского интерфейса." #: deluge/ui/console/console.py:87 msgid "Deluge daemon IP address to connect to (default 127.0.0.1)" msgstr "" +"Подключаться к службе Deluge по IP-адресу ip_addr (по умолчанию 127.0.0.1)" #: deluge/ui/console/console.py:96 msgid "Deluge daemon port to connect to (default 58846)" -msgstr "" +msgstr "Подключаться к порту port службы Deluge (по умолчанию 58846)" #: deluge/ui/console/console.py:104 msgid "Deluge daemon username to use when connecting" -msgstr "" +msgstr "Использовать имя пользователя user при подключении к службе Deluge" #: deluge/ui/console/console.py:111 msgid "Deluge daemon password to use when connecting" -msgstr "" +msgstr "Использовать пароль pass при подключении к службе Deluge" #: deluge/ui/console/console.py:131 msgid "Console Commands" -msgstr "" +msgstr "Команды командной строки" #: deluge/ui/console/console.py:132 msgid "Description" -msgstr "" +msgstr "Описание" #: deluge/ui/console/console.py:133 msgid "The following console commands are available:" -msgstr "" +msgstr "Доступны следующие команды командной строки:" #: deluge/ui/console/console.py:134 #: deluge/plugins/Execute/deluge_execute/data/execute_prefs.ui.h:2 msgid "Command" -msgstr "Ввести комманду" +msgstr "Команда" #: deluge/ui/console/cmdline/command.py:208 #, python-format msgid "`%s` alias" -msgstr "" +msgstr "То же, что и `%s`" #: deluge/ui/console/cmdline/commands/manage.py:29 msgid "Usage: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]" msgstr "" +"Использование: manage <torrent-id> [--set <key> <value>] [<key> [<key>...] ]" #: deluge/ui/console/cmdline/commands/manage.py:35 msgid "an expression matched against torrent ids and torrent names" -msgstr "" +msgstr "выражение, сопоставляемое с идентификаторами и именами торрентов" #: deluge/ui/console/cmdline/commands/manage.py:43 #: deluge/ui/console/cmdline/commands/config.py:88 msgid "set value for this key" -msgstr "" +msgstr "установить значение для этого ключа" #: deluge/ui/console/cmdline/commands/manage.py:46 #: deluge/ui/console/cmdline/commands/config.py:91 msgid "Value to set" -msgstr "" +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" -msgstr "" +msgstr "Также удалить загруженные файлы" #: deluge/ui/console/cmdline/commands/rm.py:40 msgid "List the matching torrents without removing." -msgstr "" +msgstr "Перечислить совпадающие торренты без удаления." #: deluge/ui/console/cmdline/commands/rm.py:46 #: deluge/ui/console/cmdline/commands/recheck.py:28 #: deluge/ui/console/cmdline/commands/move.py:31 msgid "One or more torrent ids" -msgstr "" +msgstr "Один или несколько идентификаторов торрентов" #: deluge/ui/console/cmdline/commands/rm.py:66 #, python-format msgid "Confirm with -c to remove the listed torrents (Count: %d)" msgstr "" +"Используйте ключ -c для подтверждения удаления перечисленных торрентов " +"(количество: %d)" #: deluge/ui/console/cmdline/commands/resume.py:22 msgid "Usage: resume [ * | <torrent-id> [<torrent-id> ...] ]" -msgstr "" +msgstr "Использование: resume [ * | <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" -msgstr "" +msgstr "Каталог для загрузки торрента" #: deluge/ui/console/cmdline/commands/add.py:44 msgid "Move the completed torrent to this folder" -msgstr "" +msgstr "Перемещать загруженный торрент в этот каталог" #: deluge/ui/console/cmdline/commands/add.py:50 msgid "One or more torrent files, URLs or magnet URIs" -msgstr "" +msgstr "Один или несколько торрент-файлов, ссылки или магнет-ссылки" #: deluge/ui/console/cmdline/commands/plugin.py:29 msgid "Lists available plugins" -msgstr "" +msgstr "Перечислить имеющиеся модули" #: deluge/ui/console/cmdline/commands/plugin.py:37 msgid "Shows enabled plugins" -msgstr "" +msgstr "Показать включённые модули" #: deluge/ui/console/cmdline/commands/plugin.py:40 msgid "Enables a plugin" -msgstr "" +msgstr "Включить модуль" #: deluge/ui/console/cmdline/commands/plugin.py:43 msgid "Disables a plugin" -msgstr "" +msgstr "Отключить дополнение" #: deluge/ui/console/cmdline/commands/plugin.py:51 msgid "Reload list of available plugins" -msgstr "" +msgstr "Перезагрузить список имеющихся модулей" #: deluge/ui/console/cmdline/commands/plugin.py:54 msgid "Install a plugin from an .egg file" -msgstr "" +msgstr "Установить модуль из .egg файла" #: deluge/ui/console/cmdline/commands/status.py:36 msgid "" "Raw values for upload/download rates (without KiB/s suffix)(useful for " "scripts that want to do their own parsing)" msgstr "" +"Необработанные значения скорости загрузки и раздачи (без суффикса КиБ/с) " +"(полезно для сценариев, желающих выполнять собственную обработку)" #: deluge/ui/console/cmdline/commands/status.py:46 msgid "Do not show torrent status (Improves command speed)" -msgstr "" +msgstr "Не показывать состояния торрентов (улучшает скорость команды)" #: deluge/ui/console/cmdline/commands/connect.py:26 msgid "Usage: connect <host[:port]> [<username>] [<password>]" -msgstr "" +msgstr "Использование: connect <host[:port]> [<username>] [<password>]" #: deluge/ui/console/cmdline/commands/connect.py:30 msgid "Daemon host and port" -msgstr "" +msgstr "Хост и порт службы" #: deluge/ui/console/cmdline/commands/connect.py:36 #: deluge/ui/console/modes/preferences/preference_panes.py:652 @@ -4682,139 +4767,146 @@ msgstr "Пароль" #: deluge/ui/console/cmdline/commands/move.py:34 msgid "The path to move the torrents to" -msgstr "" +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" -msgstr "" +msgstr "Одна или несколько комманд" #: deluge/ui/console/cmdline/commands/config.py:79 msgid "Usage: config [--set <key> <value>] [<key> [<key>...] ]" -msgstr "" +msgstr "Использование: config [--set <key> <value>] [<key> [<key>...] ]" #: deluge/ui/console/cmdline/commands/info.py:101 msgid "Show more information per torrent." -msgstr "" +msgstr "Показывать больше информации о торренте." #: deluge/ui/console/cmdline/commands/info.py:109 msgid "Show more detailed information including files and peers." -msgstr "" +msgstr "Показывать более подробную информацию, включая файлы и узлы." #: deluge/ui/console/cmdline/commands/info.py:116 #, python-format msgid "Show torrents with state STATE: %s." -msgstr "" +msgstr "Показать торренты с состоянием STATE: %s." #: deluge/ui/console/cmdline/commands/info.py:132 msgid "Same as --sort but items are in reverse order." -msgstr "" +msgstr "То же, что и --sort, но элементы расположены в обратном порядке." #: deluge/ui/console/cmdline/commands/info.py:138 msgid "One or more torrent ids. If none is given, list all" msgstr "" +"Один или несколько идентификаторов торрентов. Если ничего не указано, " +"перечислить все" #: deluge/ui/console/modes/connectionmanager.py:44 msgid "Select Host" -msgstr "" +msgstr "Выбор хоста" #: deluge/ui/console/modes/connectionmanager.py:51 msgid "Quit" -msgstr "" +msgstr "Выйти" #: deluge/ui/console/modes/connectionmanager.py:51 msgid "Delete Host" -msgstr "" +msgstr "Удалить хост" #: deluge/ui/console/modes/connectionmanager.py:116 msgid "Add Host (Up & Down arrows to navigate, Esc to cancel)" msgstr "" +"Добавление хоста (стрелки вверх и вниз для навигации, Esc для отмены)" #: deluge/ui/console/modes/connectionmanager.py:133 msgid "Error adding host" -msgstr "" +msgstr "Ошибка добавления хоста" #: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96 msgid "Columns" -msgstr "" +msgstr "Столбцы" #: deluge/ui/console/modes/torrentlist/torrentviewcolumns.py:96 msgid "Width" -msgstr "" +msgstr "Ширина" #: deluge/ui/console/modes/preferences/preference_panes.py:178 msgid "General options" -msgstr "" +msgstr "Общие параметры" #: deluge/ui/console/modes/preferences/preference_panes.py:182 msgid "Ring system bell when a download finishes" -msgstr "" +msgstr "Подавать системный звуковой сигнал при окончании загрузки" #: deluge/ui/console/modes/preferences/preference_panes.py:188 msgid "List complete torrents after incomplete regardless of sorting order" msgstr "" +"Перечислять загруженные торренты после загружающихся независимо от порядка " +"сортировки" #: deluge/ui/console/modes/preferences/preference_panes.py:193 msgid "Move selection when moving torrents in the queue" -msgstr "" +msgstr "Перемещать выделение при перемещении торрентов в очереди" #: deluge/ui/console/modes/preferences/preference_panes.py:200 #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:67 msgid "Language" -msgstr "" +msgstr "Язык" #: deluge/ui/console/modes/preferences/preference_panes.py:202 msgid "Command Line Mode" -msgstr "" +msgstr "Режим командной строки" #: deluge/ui/console/modes/preferences/preference_panes.py:205 msgid "Do not store duplicate input in history" -msgstr "" +msgstr "Не сохранять повторяющийся ввод в истории" #: deluge/ui/console/modes/preferences/preference_panes.py:210 msgid "Store and load command line history in command line mode" -msgstr "" +msgstr "Сохранять и загружать историю ввода в режиме командной строки" #: deluge/ui/console/modes/preferences/preference_panes.py:216 msgid "Third tab lists all remaining torrents in command line mode" msgstr "" +"Третье нажатие Tab в режиме командной строки перечисляет все оставшиеся " +"торренты" #: deluge/ui/console/modes/preferences/preference_panes.py:221 msgid "Torrents per tab press" -msgstr "" +msgstr "Торрентов на нажатие Tab" #: deluge/ui/console/modes/preferences/preference_panes.py:234 #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:18 #: deluge/ui/web/js/deluge-all/preferences/DownloadsPage.js:39 msgid "Folders" -msgstr "" +msgstr "Папки" #: deluge/ui/console/modes/preferences/preference_panes.py:237 msgid "Download To" -msgstr "" +msgstr "Загружать в" #: deluge/ui/console/modes/preferences/preference_panes.py:254 msgid "Move completed to" -msgstr "" +msgstr "Перемещать загруженные в" #: deluge/ui/console/modes/preferences/preference_panes.py:269 msgid "Copy of .torrent files to" -msgstr "" +msgstr "Копировать файлы .torrent в" #: deluge/ui/console/modes/preferences/preference_panes.py:290 msgid "Add Paused" -msgstr "" +msgstr "Добавлять приостановленными" #: deluge/ui/console/modes/preferences/preference_panes.py:293 msgid "Pre-Allocate disk space" -msgstr "" +msgstr "Резервировать место на диске" #: deluge/ui/console/modes/preferences/preference_panes.py:304 msgid "Incomming Ports" -msgstr "" +msgstr "Входящие порты" #: deluge/ui/console/modes/preferences/preference_panes.py:313 #: deluge/ui/console/modes/preferences/preference_panes.py:337 @@ -4833,17 +4925,21 @@ msgstr "Использовать случайные порты" #: deluge/ui/console/modes/preferences/preference_panes.py:352 msgid "Incoming Interface" -msgstr "" +msgstr "Входящий интерфейс" #: deluge/ui/console/modes/preferences/preference_panes.py:355 msgid "IP address of the interface to listen on (leave empty for default):" msgstr "" +"IP-адрес интерфейса для прослушивания (оставьте пустым для использования " +"значения по умолчанию):" #: deluge/ui/console/modes/preferences/preference_panes.py:363 msgid "" "The network interface name or IP address for outgoing BitTorrent " "connections. (Leave empty for default.):" msgstr "" +"Имя сетевого интерфейса или IP-адрес для исходящих BitTorrent соединений " +"(оставьте пустым для использования значения по умолчанию):" #: deluge/ui/console/modes/preferences/preference_panes.py:382 msgid "Inbound" @@ -4851,12 +4947,12 @@ msgstr "Входящий" #: deluge/ui/console/modes/preferences/preference_panes.py:391 msgid "Outbound" -msgstr "Исходящиц" +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 @@ -4872,20 +4968,20 @@ msgstr "Максимум слотов отдачи" #: deluge/ui/console/modes/preferences/preference_panes.py:430 #: deluge/ui/console/modes/preferences/preference_panes.py:483 msgid "Maximum Download Speed (KiB/s)" -msgstr "" +msgstr "Максимальная скорость загрузки (КиБ/с)" #: deluge/ui/console/modes/preferences/preference_panes.py:437 #: deluge/ui/console/modes/preferences/preference_panes.py:490 msgid "Maximum Upload Speed (KiB/s)" -msgstr "" +msgstr "Максимальная скорость отдачи (КиБ/с)" #: deluge/ui/console/modes/preferences/preference_panes.py:444 msgid "Maximum Half-Open Connections" -msgstr "Максимум полуоткрытых соеденений" +msgstr "Максимум полуоткрытых соединений" #: deluge/ui/console/modes/preferences/preference_panes.py:451 msgid "Maximum Connection Attempts per Second" -msgstr "Максимум попыток соеденения в сек." +msgstr "Максимум попыток соединения в секунду" #: deluge/ui/console/modes/preferences/preference_panes.py:463 msgid "Rate Limit IP Overhead" @@ -4894,43 +4990,43 @@ 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." -msgstr "" +msgstr "Отправлять анонимную статистику." #: deluge/ui/console/modes/preferences/preference_panes.py:531 msgid "Daemon Port" -msgstr "" +msgstr "Порт службы" #: deluge/ui/console/modes/preferences/preference_panes.py:538 msgid "Allow remote connections" -msgstr "" +msgstr "Разрешить удалённые соединения" #: deluge/ui/console/modes/preferences/preference_panes.py:561 msgid "Total" -msgstr "" +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)" -msgstr "" +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" -msgstr "" +msgstr "Параметры прокси" #: deluge/ui/console/modes/preferences/preference_panes.py:649 msgid "Type" @@ -4938,55 +5034,55 @@ msgstr "Тип" #: deluge/ui/console/modes/preferences/preference_panes.py:653 msgid "Hostname" -msgstr "" +msgstr "Имя хоста" #: deluge/ui/console/modes/preferences/preference_panes.py:673 msgid "Proxy Type Help" -msgstr "" +msgstr "Подсказка по типам прокси" #: deluge/ui/console/modes/preferences/preference_panes.py:697 msgid "Cache Size (16 KiB blocks)" -msgstr "" +msgstr "Размер кэша (блоков по 16 КиБ)" #: deluge/ui/console/modes/preferences/preference_panes.py:704 msgid "Cache Expiry (seconds)" -msgstr "" +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" -msgstr "" +msgstr "Операций записи" #: deluge/ui/console/modes/preferences/preference_panes.py:720 msgid "Write Cache Hit Ratio" -msgstr "" +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" -msgstr "" +msgstr "Операций чтения" #: deluge/ui/console/modes/preferences/preference_panes.py:735 msgid "Read Cache Hit Ratio" -msgstr "" +msgstr "Коэффициент эффективности кэша чтения" #: deluge/ui/console/modes/preferences/preference_panes.py:741 msgid "Cache Size" -msgstr "" +msgstr "Размер кэша" #: deluge/ui/console/modes/preferences/preference_panes.py:746 msgid "Read Cache Size" -msgstr "" +msgstr "Размер кэша чтения" #: deluge/ui/console/modes/preferences/preferences.py:145 #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:333 @@ -4999,23 +5095,23 @@ msgstr "Применить" #: deluge/ui/web/js/deluge-all/OtherLimitWindow.js:52 #: deluge/ui/web/js/deluge-all/preferences/PreferencesWindow.js:88 msgid "OK" -msgstr "" +msgstr "OK" #: deluge/ui/console/widgets/fields.py:1070 msgid "Select Language" -msgstr "" +msgstr "Выберите язык" #: deluge/ui/console/widgets/statusbars.py:120 #, python-format msgid "IP {!white,blue!}%s{!status!}" -msgstr "" +msgstr "IP {!white,blue!}%s{!status!}" #: deluge/plugins/Blocklist/deluge_blocklist/common.py:114 #: deluge/plugins/Blocklist/deluge_blocklist/common.py:116 #: deluge/plugins/Blocklist/deluge_blocklist/common.py:118 #, python-format msgid "The IP address \"%s\" is badly formed" -msgstr "" +msgstr "IP-адрес «%s» имеет неверный формат" #: deluge/plugins/Blocklist/deluge_blocklist/webui.py:21 msgid "Emule IP list (GZip)" @@ -5036,6 +5132,7 @@ msgstr "PeerGuardian P2B (GZip)" #: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:45 msgid "Blocked IP Ranges /Whitelisted IP Ranges" msgstr "" +"Диапазоны заблокированных IP-адресов / Диапазоны разрешённых IP-адресов" #: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:56 #: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:156 @@ -5045,7 +5142,7 @@ msgstr "Чёрный список" #: deluge/plugins/Blocklist/deluge_blocklist/gtkui.py:233 msgid "Bad IP address" -msgstr "" +msgstr "Неверный IP-адрес" #: deluge/plugins/Blocklist/deluge_blocklist/peerguardian.py:40 msgid "Invalid leader" @@ -5074,11 +5171,11 @@ 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." -msgstr "Скачать при необходимости черный список и загрузить его." +msgstr "Скачать при необходимости чёрный список и импортировать файл." #: deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_pref.ui.h:8 msgid "Check Download and Import" @@ -5153,13 +5250,15 @@ msgstr "<b>Команды</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:327 #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:342 msgid "Incompatible Option" -msgstr "" +msgstr "Несовместимые параметры" #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:418 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 @@ -5168,12 +5267,12 @@ msgstr "Автодобавление" #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:495 msgid "Double-click to toggle" -msgstr "" +msgstr "Двойное нажатие для переключения" #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:503 #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:511 msgid "Double-click to edit" -msgstr "" +msgstr "Двойное нажатие для изменения" #: deluge/plugins/AutoAdd/deluge_autoadd/gtkui.py:507 msgid "Path" @@ -5197,6 +5296,8 @@ msgid "" "If a .torrent file is added to this directory,\n" "it will be added to the session." msgstr "" +"Если в этот каталог добавить файл .torrent,\n" +"он будет добавлен в сеанс." #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:4 #: deluge/plugins/Extractor/deluge_extractor/data/extractor_prefs.ui.h:2 @@ -5220,6 +5321,8 @@ msgid "" "Once the torrent is added to the session,\n" "the .torrent will be deleted." msgstr "" +"Как только торрент будет добавлен в сеанс,\n" +"файл .torrent будет удалён." #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:10 msgid "Append extension after adding:" @@ -5231,6 +5334,9 @@ msgid "" "an extension will be appended to the .torrent\n" "and it will remain in the same directory." msgstr "" +"Как только торрент будет добавлен в сеанс,\n" +"к файлу .torrent будет добавлено расширение,\n" +"и он останется в том же каталоге." #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:14 msgid ".added" @@ -5242,12 +5348,18 @@ 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 "" "Once the torrent is deleted from the session,\n" "also delete the .torrent file used to add it." msgstr "" +"Как только торрент будет удалён из сеанса,\n" +"также будет удалён файл .torrent, который\n" +"использовался для его добавления." #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:22 msgid "<b>Torrent File Action</b>" @@ -5259,7 +5371,7 @@ msgstr "Указать папку для загрузок" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:24 msgid "This folder will be where the torrent data is downloaded to." -msgstr "" +msgstr "В эту папку будут загружаться данные торрентов." #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:25 msgid "<b>Download Folder</b>" @@ -5267,11 +5379,11 @@ 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>" -msgstr "Переместить завершённые закачки" +msgstr "<b>Перемещение завершённых загрузок</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:28 msgid "Label: " @@ -5287,35 +5399,35 @@ msgstr "Основное" #: 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 "Выбранный здесь пользователь будет владельцем торрента." #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:32 msgid "<b>Owner</b>" -msgstr "" +msgstr "<b>Владелец</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:33 #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:103 msgid "Max Upload Speed:" -msgstr "Максимальная скорость раздачи:" +msgstr "Максимальная скорость отдачи:" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:34 #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:130 msgid "Max Connections:" -msgstr "Максимальное кол-во соединений:" +msgstr "Максимум соединений:" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:35 #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:153 msgid "Max Upload Slots:" -msgstr "Макс. количество слотов раздачи:" +msgstr "Максимум слотов отдачи:" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:37 #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:77 msgid "Max Download Speed:" -msgstr "Максимальная скорость приёма:" +msgstr "Максимальная скорость загрузки:" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:38 msgid "<b>Bandwidth</b>" -msgstr "<b>Ограничения:</b>" +msgstr "<b>Ограничения</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/data/autoadd_options.ui.h:41 #: deluge/ui/web/render/tab_status.html:19 @@ -5336,19 +5448,19 @@ msgstr "<b>Очередь:</b>" #: deluge/plugins/AutoAdd/deluge_autoadd/data/config.ui.h:1 msgid "<b>Watch Folders:</b>" -msgstr "<b>Папки поиска:</b>" +msgstr "<b>Папки для слежения:</b>" #: deluge/plugins/Stats/deluge_stats/gtkui.py:60 msgid "minutes" -msgstr "" +msgstr "мин" #: deluge/plugins/Stats/deluge_stats/gtkui.py:62 msgid "1 minute" -msgstr "" +msgstr "1 минута" #: deluge/plugins/Stats/deluge_stats/gtkui.py:64 msgid "1 second" -msgstr "" +msgstr "1 секунда" #: deluge/plugins/Stats/deluge_stats/gtkui.py:66 msgid "seconds" @@ -5356,51 +5468,51 @@ msgstr "секунд(ы)" #: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:1 msgid "Stats" -msgstr "" +msgstr "Статистика" #: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:2 msgid "Resolution" -msgstr "" +msgstr "Разрешение" #: deluge/plugins/Stats/deluge_stats/data/tabs.ui.h:5 msgid "Seeds/Peers" -msgstr "" +msgstr "Сиды/пиры" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:1 msgid "Download color:" -msgstr "" +msgstr "Цвет загрузки:" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:2 msgid "Upload color:" -msgstr "" +msgstr "Цвет раздачи:" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:3 msgid "<b>Connections Graph</b>" -msgstr "" +msgstr "<b>График соединений</b>" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:4 msgid "<b>Bandwidth Graph</b>" -msgstr "" +msgstr "<b>График пропускной способности</b>" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:5 msgid "DHT nodes:" -msgstr "" +msgstr "Узлы DHT:" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:6 msgid "Cached DHT nodes:" -msgstr "" +msgstr "Кэшированные узлы DHT:" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:7 msgid "DHT torrents:" -msgstr "" +msgstr "Торренты DHT:" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:9 msgid "<b>Seeds / Peers</b>" -msgstr "" +msgstr "<b>Сиды/пиры</b>" #: deluge/plugins/Stats/deluge_stats/data/config.ui.h:11 msgid "<b>Graph Colors</b>" -msgstr "" +msgstr "<b>Цвета графиков</b>" #: deluge/plugins/WebUi/deluge_webui/gtkui.py:35 #: deluge/plugins/WebUi/deluge_webui/gtkui.py:47 @@ -5430,8 +5542,8 @@ msgstr "Прослушиваемый порт:" #: deluge/plugins/Label/deluge_label/core.py:184 msgid "Invalid label, valid characters:[a-z0-9_-]" msgstr "" -"Неправильная метка. Допустимые символы: латиница (A-Z), арабские цифры (0-" -"9), дефис, подчеркивание." +"Неверная метка. Допустимые символы: латиница (A-Z), арабские цифры (0-9), " +"дефис, подчёркивание." #: deluge/plugins/Label/deluge_label/core.py:186 msgid "Empty Label" @@ -5474,11 +5586,11 @@ msgstr "Параметры метки" #: deluge/plugins/Label/deluge_label/gtkui/__init__.py:49 #: deluge/plugins/Label/deluge_label/gtkui/__init__.py:77 msgid "Label" -msgstr "Подпись" +msgstr "Метка" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:1 msgid "tracker1.org" -msgstr "" +msgstr "tracker1.org" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:3 msgid "<b>Label Options</b>" @@ -5498,7 +5610,7 @@ msgstr "Применить настройки очереди:" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:17 msgid "Apply folder settings:" -msgstr "" +msgstr "Применить параметры папки:" #: deluge/plugins/Label/deluge_label/data/label_options.ui.h:19 msgid "<i>(1 line per tracker)</i>" @@ -5519,8 +5631,7 @@ msgstr "<b>Добавить метку</b>" #: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:1 msgid "<i>Use the sidebar to add,edit and remove labels. </i>\n" msgstr "" -"<i>Используйте боковую панель для добавления, редактирования и удаления " -"меток. </i>\n" +"<i>Используйте боковую панель для добавления, правки и удаления меток. </i>\n" #: deluge/plugins/Label/deluge_label/data/label_pref.ui.h:3 msgid "<b>Labels</b>" @@ -5536,11 +5647,11 @@ 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" -msgstr "" +msgstr "Не удалось показать всплывающее уведомление" #: deluge/plugins/Notifications/deluge_notifications/gtkui.py:188 msgid "Notification popup shown" @@ -5599,7 +5710,7 @@ msgstr "Сервер неверно ответил на приветствие H #: deluge/plugins/Notifications/deluge_notifications/core.py:149 #, python-format msgid "Server refused username/password combination: %s" -msgstr "" +msgstr "Сервер отклонил комбинацию имени пользователя и пароля: %s" #: deluge/plugins/Notifications/deluge_notifications/core.py:174 msgid "Notification email sent." @@ -5643,7 +5754,7 @@ msgstr "Звук включён" #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:4 msgid "<b>UI Notifications</b>" -msgstr "<b>Уведомления пользовательского интерфейса</b>" +msgstr "<b>Уведомления интерфейса</b>" #: deluge/plugins/Notifications/deluge_notifications/data/config.ui.h:9 msgid "<b>Recipients</b>" @@ -5701,7 +5812,7 @@ msgstr "Планировщик" #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:289 msgid "<b>Schedule</b>" -msgstr "" +msgstr "<b>Расписание</b>" #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:301 msgid "Download Limit:" @@ -5713,11 +5824,11 @@ msgstr "Ограничение отдачи:" #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:319 msgid "Active Torrents:" -msgstr "Выполняемые задания:" +msgstr "Активные торренты:" #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:328 msgid "Active Downloading:" -msgstr "Активные закачки:" +msgstr "Активные загрузки:" #: deluge/plugins/Scheduler/deluge_scheduler/gtkui.py:337 msgid "Active Seeding:" @@ -5729,27 +5840,27 @@ msgstr "<b>Ограничения:</b>" #: deluge/ui/web/js/deluge-all/FileBrowser.js:13 msgid "File Browser" -msgstr "" +msgstr "Файловый браузер" #: deluge/ui/web/js/deluge-all/FileBrowser.js:25 msgid "Back" -msgstr "" +msgstr "Назад" #: deluge/ui/web/js/deluge-all/FileBrowser.js:29 msgid "Forward" -msgstr "" +msgstr "Вперёд" #: deluge/ui/web/js/deluge-all/FileBrowser.js:37 msgid "Home" -msgstr "" +msgstr "Домашняя папка" #: deluge/ui/web/js/deluge-all/Toolbar.js:32 msgid "Create" -msgstr "" +msgstr "Создать" #: deluge/ui/web/js/deluge-all/Toolbar.js:100 msgid "Help" -msgstr "" +msgstr "Справка" #: deluge/ui/web/js/deluge-all/Toolbar.js:108 msgid "Logout" @@ -5761,30 +5872,30 @@ msgstr "Сохранить" #: deluge/ui/web/js/deluge-all/AboutWindow.js:19 msgid "About Deluge" -msgstr "" +msgstr "О Deluge" #: deluge/ui/web/js/deluge-all/AboutWindow.js:102 msgid "Copyright 2007-2018 Deluge Team" -msgstr "" +msgstr "Copyright 2007-2018 Команда Deluge" #: deluge/ui/web/js/deluge-all/RemoveWindow.js:33 msgid "Remove With Data" -msgstr "" +msgstr "Удалить с загруженными данными" #: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:17 msgid "Add Connection" -msgstr "" +msgstr "Добавить подключение" #: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:44 #: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:44 #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:53 msgid "Host:" -msgstr "Узел:" +msgstr "Хост:" #: deluge/ui/web/js/deluge-all/AddConnectionWindow.js:96 #, python-brace-format msgid "Unable to add host: {0}" -msgstr "" +msgstr "Не удалось добавить хост: {0}" #: deluge/ui/web/js/deluge-all/MoveStorage.js:37 msgid "Move" @@ -5792,15 +5903,15 @@ 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" -msgstr "" +msgstr "Изменить подключение" #: deluge/ui/web/js/deluge-all/EditConnectionWindow.js:115 msgid "Unable to edit host" -msgstr "" +msgstr "Не удалось изменить хост" #: deluge/ui/web/js/deluge-all/LoginWindow.js:22 #: deluge/ui/web/js/deluge-all/LoginWindow.js:31 @@ -5809,27 +5920,27 @@ msgstr "Войти" #: deluge/ui/web/js/deluge-all/LoginWindow.js:108 msgid "Login Failed" -msgstr "" +msgstr "Ошибка входа" #: deluge/ui/web/js/deluge-all/LoginWindow.js:109 msgid "You entered an incorrect password" -msgstr "" +msgstr "Введён неверный пароль" #: deluge/ui/web/js/deluge-all/TorrentGrid.js:228 msgid "Public" -msgstr "" +msgstr "Публичный" #: deluge/ui/web/js/deluge-all/TorrentGrid.js:292 msgid "Last Transfer" -msgstr "" +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" -msgstr "Максимальное количество соединений" +msgstr "Установить максимум соединений" #: deluge/ui/web/js/deluge-all/Statusbar.js:97 msgid "Download Speed" @@ -5840,35 +5951,35 @@ msgstr "Скорость загрузки" #: deluge/ui/web/js/deluge-all/Menus.js:79 #: deluge/ui/web/js/deluge-all/Menus.js:124 msgid "5 KiB/s" -msgstr "" +msgstr "5 КиБ/с" #: deluge/ui/web/js/deluge-all/Statusbar.js:108 #: deluge/ui/web/js/deluge-all/Statusbar.js:167 #: deluge/ui/web/js/deluge-all/Menus.js:85 #: deluge/ui/web/js/deluge-all/Menus.js:130 msgid "10 KiB/s" -msgstr "" +msgstr "10 КиБ/с" #: deluge/ui/web/js/deluge-all/Statusbar.js:114 #: deluge/ui/web/js/deluge-all/Statusbar.js:173 #: deluge/ui/web/js/deluge-all/Menus.js:91 #: deluge/ui/web/js/deluge-all/Menus.js:136 msgid "30 KiB/s" -msgstr "" +msgstr "30 КиБ/с" #: deluge/ui/web/js/deluge-all/Statusbar.js:120 #: deluge/ui/web/js/deluge-all/Statusbar.js:179 #: deluge/ui/web/js/deluge-all/Menus.js:97 #: deluge/ui/web/js/deluge-all/Menus.js:142 msgid "80 KiB/s" -msgstr "" +msgstr "80 КиБ/с" #: deluge/ui/web/js/deluge-all/Statusbar.js:126 #: deluge/ui/web/js/deluge-all/Statusbar.js:185 #: deluge/ui/web/js/deluge-all/Menus.js:103 #: deluge/ui/web/js/deluge-all/Menus.js:148 msgid "300 KiB/s" -msgstr "" +msgstr "300 КиБ/с" #: deluge/ui/web/js/deluge-all/Statusbar.js:145 msgid "Set Maximum Download Speed" @@ -5876,11 +5987,11 @@ msgstr "Установить максимальную скорость загр #: deluge/ui/web/js/deluge-all/Statusbar.js:156 msgid "Upload Speed" -msgstr "Скорость раздачи" +msgstr "Скорость отдачи" #: deluge/ui/web/js/deluge-all/Statusbar.js:204 msgid "Set Maximum Upload Speed" -msgstr "Установить лимит скорости раздачи" +msgstr "Установить максимум скорости отдачи" #: deluge/ui/web/js/deluge-all/Statusbar.js:215 msgid "Protocol Traffic Download/Upload" @@ -5888,12 +5999,12 @@ msgstr "Трафик протокола - Загрузка/Отдача" #: deluge/ui/web/js/deluge-all/Statusbar.js:242 msgid "Freespace in download folder" -msgstr "" +msgstr "Свободное место в папке для загрузки" #: deluge/ui/web/js/deluge-all/Statusbar.js:357 #, python-brace-format msgid "<b>IP</b> {0}" -msgstr "" +msgstr "<b>IP</b> {0}" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:33 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:187 @@ -5904,29 +6015,30 @@ msgstr "Соединиться" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:197 #: deluge/ui/web/js/deluge-all/ConnectionManager.js:379 msgid "Stop Daemon" -msgstr "" +msgstr "Остановить службу" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:185 msgid "Disconnect" -msgstr "" +msgstr "Отключиться" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:204 msgid "Start Daemon" -msgstr "" +msgstr "Запустить службу" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:322 msgid "Change Default Password" -msgstr "" +msgstr "Изменить пароль по умолчанию" #: deluge/ui/web/js/deluge-all/ConnectionManager.js:324 msgid "" "We recommend changing the default password.<br><br>Would you like to change " "it now?" msgstr "" +"Рекомендуется изменить пароль по умолчанию.<br><br>Изменить его сейчас?" #: deluge/ui/web/js/deluge-all/Sidebar.js:13 msgid "Tracker Host" -msgstr "" +msgstr "Хост трекера" #: deluge/ui/web/js/deluge-all/Sidebar.js:33 msgid "Filters" @@ -5934,19 +6046,19 @@ msgstr "Фильтры" #: deluge/ui/web/js/deluge-all/UI.js:142 msgid "Connection restored" -msgstr "" +msgstr "Соединение восстановлено" #: deluge/ui/web/js/deluge-all/UI.js:153 msgid "Lost Connection" -msgstr "" +msgstr "Соединение потеряно" #: deluge/ui/web/js/deluge-all/UI.js:154 msgid "The connection to the webserver has been lost!" -msgstr "" +msgstr "Соединение с веб-сервером потеряно!" #: deluge/ui/web/js/deluge-all/UI.js:160 msgid "Lost connection to webserver" -msgstr "" +msgstr "Потеряно соединение с веб-сервером" #: deluge/ui/web/js/deluge-all/Menus.js:72 msgid "D/L Speed Limit" @@ -5958,7 +6070,7 @@ msgstr "Ограничение скорости загрузки" #: deluge/ui/web/js/deluge-all/Menus.js:162 msgid "Connection Limit" -msgstr "Лимит соединений" +msgstr "Ограничение соединений" #: deluge/ui/web/js/deluge-all/Menus.js:207 msgid "Upload Slot Limit" @@ -5970,11 +6082,11 @@ msgstr "Обновить трекер" #: deluge/ui/web/js/deluge-all/Menus.js:339 msgid "Force Recheck" -msgstr "Быстрая перепроверка" +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" @@ -5982,15 +6094,15 @@ 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:" -msgstr "" +msgstr "Перемещать завершённые:" #: deluge/ui/web/js/deluge-all/details/OptionsTab.js:272 #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:116 @@ -6003,7 +6115,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" @@ -6018,40 +6130,43 @@ msgid "" "Help us improve Deluge by sending us your Python version, PyGTK version, OS " "and processor types. Absolutely no other information is sent." msgstr "" +"Помогите нам сделать Deluge лучше, отправляя сведения об используемых " +"версиях Python, PyGTK, а также о типах ОС и процессора. Никакая другая " +"информация не отправляется." #: deluge/ui/web/js/deluge-all/preferences/QueuePage.js:215 msgid "Pause torrent" -msgstr "" +msgstr "Приостановить торрент" #: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:17 msgid "Install Plugin" -msgstr "" +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" -msgstr "" +msgstr "Выберите egg" #: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:46 msgid "Plugin Egg" -msgstr "" +msgstr "Модуль Egg" #: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:49 msgid "Browse..." -msgstr "" +msgstr "Обзор..." #: deluge/ui/web/js/deluge-all/preferences/InstallPluginWindow.js:59 msgid "Uploading your plugin..." -msgstr "" +msgstr "Ваш модуль загружается..." #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:52 #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:162 msgid "Maximum Connections:" -msgstr "Максимальное число соединений:" +msgstr "Максимум соединений:" #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:74 #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:184 @@ -6061,63 +6176,63 @@ msgstr "Максимальная скорость приёма (КБ/с):" #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:85 #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:195 msgid "Maximum Upload Speed (KiB/s):" -msgstr "Лимит скорости раздачи (КБ/с):" +msgstr "Максимальная скорость отдачи (КиБ/с):" #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:96 msgid "Maximum Half-Open Connections:" -msgstr "Максимальное число полуоткрытых соединений:" +msgstr "Максимум полуоткрытых соединений:" #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:107 msgid "Maximum Connection Attempts per Second:" -msgstr "Максимальное число попыток соединения в секунду:" +msgstr "Максимум попыток соединения в секунду:" #: deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js:173 msgid "Maximum Upload Slots:" -msgstr "Лимит числа слотов раздачи:" +msgstr "Максимум слотов отдачи:" #: deluge/ui/web/js/deluge-all/preferences/CachePage.js:43 msgid "Cache Size (16 KiB Blocks):" -msgstr "" +msgstr "Размер кэша (блоков по 16 КиБ):" #: deluge/ui/web/js/deluge-all/preferences/ProxyField.js:132 msgid "Force Use of Proxy" -msgstr "" +msgstr "Использовать прокси принудительно" #: deluge/ui/web/js/deluge-all/preferences/PluginsPage.js:116 msgid "Find More" -msgstr "" +msgstr "Найти ещё" #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:69 msgid "Use Random Port" -msgstr "" +msgstr "Использовать случайный порт" #: deluge/ui/web/js/deluge-all/preferences/NetworkPage.js:241 msgid "Type Of Service" -msgstr "" +msgstr "Тип обслуживания (ToS)" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:53 msgid "Show filters with zero torrents" -msgstr "" +msgstr "Показывать фильтры с нулевым числом торрентов" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:60 msgid "Allow the use of multiple filters at once" -msgstr "" +msgstr "Разрешить использование нескольких фильтров одновременно" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:94 msgid "WebUI Password" -msgstr "" +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:" -msgstr "" +msgstr "Подтвердите:" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:124 msgid "Server" @@ -6125,27 +6240,28 @@ msgstr "Сервер" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:140 msgid "Session Timeout:" -msgstr "" +msgstr "Время ожидания сеанса" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:165 msgid "Enable SSL (paths relative to Deluge config folder)" -msgstr "" +msgstr "Включить SSL (пути относ. папки конфиг. Deluge)" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:177 msgid "Private Key:" -msgstr "" +msgstr "Закрытый ключ:" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:187 msgid "Certificate:" -msgstr "" +msgstr "Сертификат:" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:205 msgid "WebUI Language Changed" -msgstr "" +msgstr "Язык веб-интерфейса изменён" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:207 msgid "Do you want to refresh the page now to use the new language?" msgstr "" +"Вы хотите обновить страницу сейчас, чтобы сразу использовать новый язык?" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:210 msgid "Refresh" @@ -6153,27 +6269,27 @@ 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!" -msgstr "" +msgstr "Введённые пароли не совпадают!" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:260 msgid "Your old password was incorrect!" -msgstr "" +msgstr "Введён неверный старый пароль!" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:269 msgid "Change Successful" -msgstr "" +msgstr "Успешно изменено" #: deluge/ui/web/js/deluge-all/preferences/InterfacePage.js:270 msgid "Your password was successfully changed!" -msgstr "" +msgstr "Ваш пароль был изменён успешно!" #: deluge/ui/web/js/deluge-all/add/UrlWindow.js:13 msgid "Add from Url" -msgstr "" +msgstr "Добавить по ссылке" #: deluge/ui/web/js/deluge-all/add/UrlWindow.js:37 #: deluge/ui/web/js/deluge-all/add/AddWindow.js:143 @@ -6182,11 +6298,11 @@ msgstr "Url" #: 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" -msgstr "" +msgstr "Не удалось скачать торрент" #: deluge/ui/web/js/deluge-all/add/AddWindow.js:133 msgid "File" @@ -6194,15 +6310,15 @@ 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..." -msgstr "" +msgstr "Загрузка торрента…" #: deluge/ui/web/js/deluge-all/add/AddWindow.js:292 msgid "Failed to upload torrent" -msgstr "" +msgstr "Не удалось загрузить торрент" #: deluge/ui/web/js/deluge-all/add/AddWindow.js:317 msgid "Not a valid torrent" @@ -6210,23 +6326,23 @@ msgstr "Недействительный торрент" #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:50 msgid "Move Completed Folder" -msgstr "" +msgstr "Каталог для перемещения завершённых загрузок" #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:85 msgid "Max Down Speed" -msgstr "" +msgstr "Макс. ск. загрузки" #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:93 msgid "Max Up Speed" -msgstr "" +msgstr "Макс. скор. отдачи" #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:125 msgid "Add In Paused State" -msgstr "Поставить на паузу" +msgstr "Добавить остановленным" #: deluge/ui/web/js/deluge-all/add/OptionsTab.js:161 msgid "Super Seed" -msgstr "" +msgstr "Супер-раздача" #: deluge/ui/web/js/deluge-all/add/FilesTab.js:43 msgid "Download" diff --git a/deluge/i18n/si.po b/deluge/i18n/si.po index 61266b337..fdaad7910 100644 --- a/deluge/i18n/si.po +++ b/deluge/i18n/si.po @@ -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" @@ -4452,16 +4452,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4470,7 +4470,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/sk.po b/deluge/i18n/sk.po index 33aaf0acc..c5dadee18 100644 --- a/deluge/i18n/sk.po +++ b/deluge/i18n/sk.po @@ -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" @@ -4441,16 +4441,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4459,7 +4459,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/sl.po b/deluge/i18n/sl.po index 51c231c7c..6a0f9f6fa 100644 --- a/deluge/i18n/sl.po +++ b/deluge/i18n/sl.po @@ -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" @@ -4445,16 +4445,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4463,7 +4463,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/sr.po b/deluge/i18n/sr.po index 5f406fbd5..59f9c2a0e 100644 --- a/deluge/i18n/sr.po +++ b/deluge/i18n/sr.po @@ -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" @@ -4469,16 +4469,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4487,7 +4487,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/sv.po b/deluge/i18n/sv.po index 051eecdf8..18f82f2e1 100644 --- a/deluge/i18n/sv.po +++ b/deluge/i18n/sv.po @@ -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 @@ -4529,16 +4529,16 @@ msgstr "_Normal" msgid "_High" msgstr "_Hög" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "Deluge arbetsgruppen" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "Deluge är en lätt, fri, plattformsoberoende BitTorrent-klient." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4552,7 +4552,7 @@ msgstr "" "hastighetsgränser. Eftersom Deluge utnyttjar biblioteket libtorrent har den " "en omfattande lista över funktionerna." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " @@ -6325,5 +6325,5 @@ msgstr "Tid kvar:" msgid "Date Added:" msgstr "Tillagd:" -#~ msgid "<b>Languge</b>" +#~ msgid "<b>Language</b>" #~ msgstr "<b>Språk</b>" diff --git a/deluge/i18n/ta.po b/deluge/i18n/ta.po index 9d604d887..015c304ae 100644 --- a/deluge/i18n/ta.po +++ b/deluge/i18n/ta.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/te.po b/deluge/i18n/te.po index 6ec7cde20..357d260cb 100644 --- a/deluge/i18n/te.po +++ b/deluge/i18n/te.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/th.po b/deluge/i18n/th.po index 8f27d04db..f95396009 100644 --- a/deluge/i18n/th.po +++ b/deluge/i18n/th.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/tl.po b/deluge/i18n/tl.po index e02de2943..db38679ce 100644 --- a/deluge/i18n/tl.po +++ b/deluge/i18n/tl.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/tlh.po b/deluge/i18n/tlh.po index fa8c2a849..646e1a2a4 100644 --- a/deluge/i18n/tlh.po +++ b/deluge/i18n/tlh.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/tr.po b/deluge/i18n/tr.po index 65cb2cc02..69dee5694 100644 --- a/deluge/i18n/tr.po +++ b/deluge/i18n/tr.po @@ -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" @@ -4541,18 +4541,18 @@ msgstr "_Normal" msgid "_High" msgstr "_Yüksek" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "Deluge Takımı" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" "Deluge, hafiftir, Özgür Yazılımdır, platformlar arası bir BitTorrent " "istemcisidir." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4566,7 +4566,7 @@ msgstr "" "özellikleri içerir. Deluge, libtorrent kütüphanesini yoğun bir şekilde " "kullandığından, sağlanan özelliklerin kapsamlı bir listesine sahiptir." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/uk.po b/deluge/i18n/uk.po index 3ab7af1db..2559bbfad 100644 --- a/deluge/i18n/uk.po +++ b/deluge/i18n/uk.po @@ -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" @@ -4534,16 +4534,16 @@ msgstr "_Звичайний" msgid "_High" msgstr "_Високий" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "Команда Deluge" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "Deluge - легкий, вільний, багатоплатформовий BitTorrent клієнт." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4557,7 +4557,7 @@ msgstr "" "швидкості потоку. Оскільки Deluge активно використовує бібліотеку " "libtorrent, він має вичерпний перелік наданих функцій." -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " @@ -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..." @@ -6337,5 +6348,5 @@ msgstr "ETA:" msgid "Date Added:" msgstr "Дата додавання:" -#~ msgid "<b>Languge</b>" +#~ msgid "<b>Language</b>" #~ msgstr "<b>Мова</b>" diff --git a/deluge/i18n/ur.po b/deluge/i18n/ur.po index 0ba1818c3..6c1cbe27d 100644 --- a/deluge/i18n/ur.po +++ b/deluge/i18n/ur.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/util.py b/deluge/i18n/util.py index df2e3ab8a..f6920fbb3 100644 --- a/deluge/i18n/util.py +++ b/deluge/i18n/util.py @@ -51,7 +51,7 @@ def get_languages(): name = LANGUAGES[lang_code] lang.append([lang_code, _(name)]) - lang = sorted(lang, key=lambda l: l[1]) + lang = sorted(lang, key=lambda k: k[1]) return lang diff --git a/deluge/i18n/vi.po b/deluge/i18n/vi.po index 58d97f1f1..c8e21166e 100644 --- a/deluge/i18n/vi.po +++ b/deluge/i18n/vi.po @@ -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" @@ -4466,16 +4466,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4484,7 +4484,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/zh_CN.po b/deluge/i18n/zh_CN.po index bdd70febd..8472bd909 100644 --- a/deluge/i18n/zh_CN.po +++ b/deluge/i18n/zh_CN.po @@ -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?" @@ -4443,16 +4443,16 @@ msgstr "正常(_N)" msgid "_High" msgstr "高(_H)" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "Deluge Team" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "Deluge 是一个轻量级的免费软件,跨平台的 BitTorrent 客户端。" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4461,7 +4461,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " @@ -6203,5 +6203,5 @@ msgstr "估计剩余时间:" msgid "Date Added:" msgstr "添加日期:" -#~ msgid "<b>Languge</b>" +#~ msgid "<b>Language</b>" #~ msgstr "<b>语言</b>" diff --git a/deluge/i18n/zh_HK.po b/deluge/i18n/zh_HK.po index 2f316ae27..678969200 100644 --- a/deluge/i18n/zh_HK.po +++ b/deluge/i18n/zh_HK.po @@ -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" @@ -4422,16 +4422,16 @@ msgstr "" msgid "_High" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4440,7 +4440,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/i18n/zh_TW.po b/deluge/i18n/zh_TW.po index 716f94308..b14d00679 100644 --- a/deluge/i18n/zh_TW.po +++ b/deluge/i18n/zh_TW.po @@ -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 @@ -4426,16 +4426,16 @@ msgstr "普通(_N)" msgid "_High" msgstr "高(_H)" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:1 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:1 msgid "Deluge Team" msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:2 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:2 msgid "" "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:3 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:3 msgid "" "Deluge contains the common features to BitTorrent clients such as Protocol " "Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange (PEX), UPnP, NAT-" @@ -4444,7 +4444,7 @@ msgid "" "of the features provided." msgstr "" -#: deluge/ui/data/share/appdata/deluge.appdata.xml.in.h:4 +#: deluge/ui/data/share/metainfo/deluge.metainfo.xml.in.h:4 msgid "" "Deluge has been designed to run as both a normal standalone desktop " "application and as a client-server. In Thinclient mode a Deluge daemon " diff --git a/deluge/log.py b/deluge/log.py index 9ac0e27d5..ef31f4ddc 100644 --- a/deluge/log.py +++ b/deluge/log.py @@ -156,8 +156,6 @@ def setup_logger( else: handler = logging.StreamHandler(stream=output_stream) - handler.setLevel(level) - formatter = logging.Formatter( DEFAULT_LOGGING_FORMAT % MAX_LOGGER_NAME_LENGTH, datefmt='%H:%M:%S' ) diff --git a/deluge/maketorrent.py b/deluge/maketorrent.py index c0051cae0..07a2a9d17 100644 --- a/deluge/maketorrent.py +++ b/deluge/maketorrent.py @@ -117,7 +117,7 @@ class TorrentMetadata: files = [] padding_count = 0 # Collect a list of file paths and add padding files if necessary - for (dirpath, dirnames, filenames) in os.walk(self.data_path): + for dirpath, dirnames, filenames in os.walk(self.data_path): for index, filename in enumerate(filenames): size = get_path_size( os.path.join(self.data_path, dirpath, filename) diff --git a/deluge/metafile.py b/deluge/metafile.py index cd6545a75..81a371ff3 100644 --- a/deluge/metafile.py +++ b/deluge/metafile.py @@ -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 @@ class RemoteFileProgress: ) -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): +def _next_pow2(num): + import math + + if not num: + return 1 + return 2 ** math.ceil(math.log2(num)) + + +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] + + fs = lt.file_storage() + if os.path.isfile(path): + lt.add_files(fs, path) + else: + 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) - piece_count = 0 + files = [] + pieces = [] + file_tree = {} + piece_layers = {} if os.path.isdir(path): - subs = sorted(subfiles(path)) - pieces = [] - sh = sha() - done = 0 - fs = [] + 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 - totalhashed = 0 for p, f in subs: totalsize += os.path.getsize(f) - if totalsize >= piece_length: - import math - - num_pieces = math.ceil(totalsize / piece_length) + 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: - num_pieces = 1 - - 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: + 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()], + } + ) pieces.append(sh.digest()) - piece_count += 1 - progress(piece_count, num_pieces) - - 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, - } - else: - size = os.path.getsize(path) - if size >= piece_length: - num_pieces = size // piece_length + 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: - num_pieces = 1 - - 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, + info[b'length'] = length + if torrent_format.includes_v2(): + info.update( + { + b'meta version': 2, + b'file tree': file_tree, } - return { - 'pieces': b''.join(pieces), - 'piece length': piece_length, - 'length': size, - 'name': name, - 'private': private, - } + ) + return info, piece_layers if torrent_format.includes_v2() else None def subfiles(d): diff --git a/deluge/plugins/AutoAdd/deluge_autoadd/core.py b/deluge/plugins/AutoAdd/deluge_autoadd/core.py index 07ad53a8e..271d5f0d9 100644 --- a/deluge/plugins/AutoAdd/deluge_autoadd/core.py +++ b/deluge/plugins/AutoAdd/deluge_autoadd/core.py @@ -80,7 +80,6 @@ def check_input(cond, message): class Core(CorePluginBase): def enable(self): - # reduce typing, assigning some values to self... self.config = deluge.configmanager.ConfigManager('autoadd.conf', DEFAULT_PREFS) self.config.run_converter((0, 1), 2, self.__migrate_config_1_to_2) @@ -271,7 +270,7 @@ class Core(CorePluginBase): try: filedump = self.load_torrent(filepath, magnet) - except (OSError, EOFError, InvalidTorrentError) as ex: + except (OSError, EOFError, RuntimeError, InvalidTorrentError) as ex: # If torrent is invalid, keep track of it so can try again on the next pass. # This catches torrent files that may not be fully saved to disk at load time. log.debug('Torrent is invalid: %s', ex) diff --git a/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_import24.png b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_import24.png Binary files differindex 9441214cb..f1a02e756 100644 --- a/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_import24.png +++ b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_import24.png diff --git a/deluge/plugins/Blocklist/deluge_blocklist/webui.py b/deluge/plugins/Blocklist/deluge_blocklist/webui.py index b8a0ca244..8ba49117d 100644 --- a/deluge/plugins/Blocklist/deluge_blocklist/webui.py +++ b/deluge/plugins/Blocklist/deluge_blocklist/webui.py @@ -23,6 +23,5 @@ FORMAT_LIST = [ class WebUI(WebPluginBase): - scripts = [get_resource('blocklist.js')] debug_scripts = scripts diff --git a/deluge/plugins/Execute/deluge_execute/webui.py b/deluge/plugins/Execute/deluge_execute/webui.py index 26a444533..3586371a7 100644 --- a/deluge/plugins/Execute/deluge_execute/webui.py +++ b/deluge/plugins/Execute/deluge_execute/webui.py @@ -16,6 +16,5 @@ log = logging.getLogger(__name__) class WebUI(WebPluginBase): - scripts = [get_resource('execute.js')] debug_scripts = scripts diff --git a/deluge/plugins/Extractor/deluge_extractor/webui.py b/deluge/plugins/Extractor/deluge_extractor/webui.py index 715733cb7..0f58658d9 100644 --- a/deluge/plugins/Extractor/deluge_extractor/webui.py +++ b/deluge/plugins/Extractor/deluge_extractor/webui.py @@ -20,6 +20,5 @@ log = logging.getLogger(__name__) class WebUI(WebPluginBase): - scripts = [get_resource('extractor.js')] debug_scripts = scripts diff --git a/deluge/plugins/Label/deluge_label/core.py b/deluge/plugins/Label/deluge_label/core.py index a91275f03..c28490b46 100644 --- a/deluge/plugins/Label/deluge_label/core.py +++ b/deluge/plugins/Label/deluge_label/core.py @@ -137,6 +137,7 @@ class Core(CorePluginBase): log.debug('post_torrent_remove') if torrent_id in self.torrent_labels: del self.torrent_labels[torrent_id] + self.config.save() # Utils # def clean_config(self): @@ -191,8 +192,7 @@ class Core(CorePluginBase): """remove a label""" check_input(label_id in self.labels, _('Unknown Label')) del self.labels[label_id] - self.clean_config() - self.config.save() + self.save_config() def _set_torrent_options(self, torrent_id, label_id): options = self.labels[label_id] diff --git a/deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py b/deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py index da1830269..9d164b284 100644 --- a/deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py +++ b/deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py @@ -31,7 +31,6 @@ NO_LABEL = 'No Label' # menu class LabelSidebarMenu: def __init__(self): - self.treeview = component.get('FilterTreeView') self.menu = self.treeview.menu self.items = [] diff --git a/deluge/plugins/Label/deluge_label/gtkui/submenu.py b/deluge/plugins/Label/deluge_label/gtkui/submenu.py index ba9324b3d..54b659429 100644 --- a/deluge/plugins/Label/deluge_label/gtkui/submenu.py +++ b/deluge/plugins/Label/deluge_label/gtkui/submenu.py @@ -51,7 +51,7 @@ class LabelMenu(MenuItem): if label == NO_LABEL: item = MenuItem(_(NO_LABEL)) # noqa: F821 else: - item = MenuItem(label.replace('_', '__')) + item = MenuItem(label) item.connect('activate', self.on_select_label, label) self.sub_menu.append(item) self.show_all() diff --git a/deluge/plugins/Notifications/deluge_notifications/webui.py b/deluge/plugins/Notifications/deluge_notifications/webui.py index ad090f5c1..bf3e829d2 100644 --- a/deluge/plugins/Notifications/deluge_notifications/webui.py +++ b/deluge/plugins/Notifications/deluge_notifications/webui.py @@ -21,7 +21,6 @@ log = logging.getLogger(__name__) class WebUI(WebPluginBase): - scripts = [get_resource('notifications.js')] debug_scripts = scripts diff --git a/deluge/plugins/Scheduler/deluge_scheduler/webui.py b/deluge/plugins/Scheduler/deluge_scheduler/webui.py index 4f5418b88..e41791638 100644 --- a/deluge/plugins/Scheduler/deluge_scheduler/webui.py +++ b/deluge/plugins/Scheduler/deluge_scheduler/webui.py @@ -19,6 +19,5 @@ log = logging.getLogger(__name__) class WebUI(WebPluginBase): - scripts = [get_resource('scheduler.js')] debug_scripts = scripts diff --git a/deluge/plugins/Stats/deluge_stats/graph.py b/deluge/plugins/Stats/deluge_stats/graph.py index 0d3220fc1..ddb8f548d 100644 --- a/deluge/plugins/Stats/deluge_stats/graph.py +++ b/deluge/plugins/Stats/deluge_stats/graph.py @@ -104,20 +104,19 @@ class Graph: def set_interval(self, interval): self.interval = interval - def draw_to_context(self, context, width, height): - self.ctx = context + def draw_to_context(self, ctx, width, height): self.width, self.height = width, height - self.draw_rect(white, 0, 0, self.width, self.height) - self.draw_graph() - return self.ctx + self.draw_rect(ctx, white, 0, 0, self.width, self.height) + self.draw_graph(ctx) def draw(self, width, height): + """Create surface with context for use in tests""" surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) ctx = cairo.Context(surface) self.draw_to_context(ctx, width, height) return surface - def draw_x_axis(self, bounds): + def draw_x_axis(self, ctx, bounds): (left, top, right, bottom) = bounds duration = self.length * self.interval start = self.last_update - duration @@ -142,13 +141,13 @@ class Graph: ) # + 0.5 to allign x to nearest pixel x = int(ratio * (seconds_to_step + i * x_step) + left) + 0.5 - self.draw_x_text(text, x, bottom) - self.draw_dotted_line(gray, x, top - 0.5, x, bottom + 0.5) + self.draw_x_text(ctx, text, x, bottom) + self.draw_dotted_line(ctx, gray, x, top - 0.5, x, bottom + 0.5) - self.draw_line(gray, left, bottom + 0.5, right, bottom + 0.5) + self.draw_line(ctx, gray, left, bottom + 0.5, right, bottom + 0.5) - def draw_graph(self): - font_extents = self.ctx.font_extents() + def draw_graph(self, ctx): + font_extents = ctx.font_extents() x_axis_space = font_extents[2] + 2 + self.line_size / 2 plot_height = self.height - x_axis_space # lets say we need 2n-1*font height pixels to plot the y ticks @@ -171,18 +170,18 @@ class Graph: # find the width of the y_ticks y_tick_text = [self.left_axis['formatter'](tick) for tick in y_ticks] - def space_required(text): - te = self.ctx.text_extents(text) + def space_required(ctx, text): + te = ctx.text_extents(text) return math.ceil(te[4] - te[0]) - y_tick_width = max(space_required(text) for text in y_tick_text) + y_tick_width = max(space_required(ctx, text) for text in y_tick_text) top = font_extents[2] / 2 # bounds(left, top, right, bottom) bounds = (y_tick_width + 4, top + 2, self.width, self.height - x_axis_space) - self.draw_x_axis(bounds) - self.draw_left_axis(bounds, y_ticks, y_tick_text) + self.draw_x_axis(ctx, bounds) + self.draw_left_axis(ctx, bounds, y_ticks, y_tick_text) def intervalise(self, x, limit=None): """Given a value x create an array of tick points to got with the graph @@ -229,7 +228,7 @@ class Graph: ] return intervals - def draw_left_axis(self, bounds, y_ticks, y_tick_text): + def draw_left_axis(self, ctx, bounds, y_ticks, y_tick_text): (left, top, right, bottom) = bounds stats = {} for stat in self.stat_info: @@ -246,29 +245,36 @@ class Graph: for i, y_val in enumerate(y_ticks): y = int(bottom - y_val * ratio) - 0.5 if i != 0: - self.draw_dotted_line(gray, left, y, right, y) - self.draw_y_text(y_tick_text[i], left, y) - self.draw_line(gray, left, top, left, bottom) + self.draw_dotted_line(ctx, gray, left, y, right, y) + self.draw_y_text(ctx, y_tick_text[i], left, y) + self.draw_line(ctx, gray, left, top, left, bottom) for stat, info in stats.items(): if len(info['values']) > 0: - self.draw_value_poly(info['values'], info['color'], max_value, bounds) self.draw_value_poly( - info['values'], info['fill_color'], max_value, bounds, info['fill'] + ctx, info['values'], info['color'], max_value, bounds + ) + self.draw_value_poly( + ctx, + info['values'], + info['fill_color'], + max_value, + bounds, + info['fill'], ) def draw_legend(self): pass - def trace_path(self, values, max_value, bounds): + def trace_path(self, ctx, values, max_value, bounds): (left, top, right, bottom) = bounds ratio = (bottom - top) / max_value line_width = self.line_size - self.ctx.set_line_width(line_width) - self.ctx.move_to(right, bottom) + ctx.set_line_width(line_width) + ctx.move_to(right, bottom) - self.ctx.line_to(right, int(bottom - values[0] * ratio)) + ctx.line_to(right, int(bottom - values[0] * ratio)) x = right step = (right - left) / (self.length - 1) @@ -276,64 +282,62 @@ class Graph: if i == self.length - 1: x = left - self.ctx.line_to(x, int(bottom - value * ratio)) + ctx.line_to(x, int(bottom - value * ratio)) x -= step - self.ctx.line_to(int(right - (len(values) - 1) * step), bottom) - self.ctx.close_path() + ctx.line_to(int(right - (len(values) - 1) * step), bottom) + ctx.close_path() - def draw_value_poly(self, values, color, max_value, bounds, fill=False): - self.trace_path(values, max_value, bounds) - self.ctx.set_source_rgba(*color) + def draw_value_poly(self, ctx, values, color, max_value, bounds, fill=False): + self.trace_path(ctx, values, max_value, bounds) + ctx.set_source_rgba(*color) if fill: - self.ctx.fill() + ctx.fill() else: - self.ctx.stroke() + ctx.stroke() - def draw_x_text(self, text, x, y): + def draw_x_text(self, ctx, text, x, y): """Draws text below and horizontally centered about x,y""" - fe = self.ctx.font_extents() - te = self.ctx.text_extents(text) + fe = ctx.font_extents() + te = ctx.text_extents(text) height = fe[2] x_bearing = te[0] width = te[2] - self.ctx.move_to(int(x - width / 2 + x_bearing), int(y + height)) - self.ctx.set_source_rgba(*self.black) - self.ctx.show_text(text) + ctx.move_to(int(x - width / 2 + x_bearing), int(y + height)) + ctx.set_source_rgba(*self.black) + ctx.show_text(text) - def draw_y_text(self, text, x, y): + def draw_y_text(self, ctx, text, x, y): """Draws text left of and vertically centered about x,y""" - fe = self.ctx.font_extents() - te = self.ctx.text_extents(text) + fe = ctx.font_extents() + te = ctx.text_extents(text) descent = fe[1] ascent = fe[0] x_bearing = te[0] width = te[4] - self.ctx.move_to( - int(x - width - x_bearing - 2), int(y + (ascent - descent) / 2) - ) - self.ctx.set_source_rgba(*self.black) - self.ctx.show_text(text) - - def draw_rect(self, color, x, y, height, width): - self.ctx.set_source_rgba(*color) - self.ctx.rectangle(x, y, height, width) - self.ctx.fill() - - def draw_line(self, color, x1, y1, x2, y2): - self.ctx.set_source_rgba(*color) - self.ctx.set_line_width(1) - self.ctx.move_to(x1, y1) - self.ctx.line_to(x2, y2) - self.ctx.stroke() - - def draw_dotted_line(self, color, x1, y1, x2, y2): - self.ctx.set_source_rgba(*color) - self.ctx.set_line_width(1) - dash, offset = self.ctx.get_dash() - self.ctx.set_dash(self.dash_length, 0) - self.ctx.move_to(x1, y1) - self.ctx.line_to(x2, y2) - self.ctx.stroke() - self.ctx.set_dash(dash, offset) + ctx.move_to(int(x - width - x_bearing - 2), int(y + (ascent - descent) / 2)) + ctx.set_source_rgba(*self.black) + ctx.show_text(text) + + def draw_rect(self, ctx, color, x, y, height, width): + ctx.set_source_rgba(*color) + ctx.rectangle(x, y, height, width) + ctx.fill() + + def draw_line(self, ctx, color, x1, y1, x2, y2): + ctx.set_source_rgba(*color) + ctx.set_line_width(1) + ctx.move_to(x1, y1) + ctx.line_to(x2, y2) + ctx.stroke() + + def draw_dotted_line(self, ctx, color, x1, y1, x2, y2): + ctx.set_source_rgba(*color) + ctx.set_line_width(1) + dash, offset = ctx.get_dash() + ctx.set_dash(self.dash_length, 0) + ctx.move_to(x1, y1) + ctx.line_to(x2, y2) + ctx.stroke() + ctx.set_dash(dash, offset) diff --git a/deluge/plugins/Stats/deluge_stats/gtkui.py b/deluge/plugins/Stats/deluge_stats/gtkui.py index c088060dc..39c1d4c37 100644 --- a/deluge/plugins/Stats/deluge_stats/gtkui.py +++ b/deluge/plugins/Stats/deluge_stats/gtkui.py @@ -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 diff --git a/deluge/plugins/Stats/deluge_stats/tests/test_stats.py b/deluge/plugins/Stats/deluge_stats/tests/test_stats.py index 9c66ee107..d61cd4666 100644 --- a/deluge/plugins/Stats/deluge_stats/tests/test_stats.py +++ b/deluge/plugins/Stats/deluge_stats/tests/test_stats.py @@ -7,7 +7,6 @@ import pytest import pytest_twisted from twisted.internet import defer -import deluge.component as component from deluge.common import fsize, fspeed from deluge.ui.client import client @@ -21,17 +20,15 @@ def print_totals(totals): print('down:', fsize(totals['total_download'] - totals['total_payload_download'])) -@pytest.mark.usefixtures('component') class TestStatsPlugin: @pytest_twisted.async_yield_fixture(autouse=True) - async def set_up(self): + async def set_up(self, component): defer.setDebugging(True) client.start_standalone() client.core.enable_plugin('Stats') await component.start() yield client.stop_standalone() - await component.shutdown() @defer.inlineCallbacks def test_client_totals(self): @@ -61,7 +58,7 @@ class TestStatsPlugin: @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. @@ -105,5 +102,5 @@ class TestStatsPlugin: 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) diff --git a/deluge/plugins/Stats/deluge_stats/webui.py b/deluge/plugins/Stats/deluge_stats/webui.py index f38daeb64..2c2ed469c 100644 --- a/deluge/plugins/Stats/deluge_stats/webui.py +++ b/deluge/plugins/Stats/deluge_stats/webui.py @@ -20,7 +20,6 @@ log = logging.getLogger(__name__) class WebUI(WebPluginBase): - scripts = [get_resource('stats.js')] # The enable and disable methods are not scrictly required on the WebUI diff --git a/deluge/plugins/Toggle/deluge_toggle/webui.py b/deluge/plugins/Toggle/deluge_toggle/webui.py index d16d29fff..637365ca7 100644 --- a/deluge/plugins/Toggle/deluge_toggle/webui.py +++ b/deluge/plugins/Toggle/deluge_toggle/webui.py @@ -21,7 +21,6 @@ log = logging.getLogger(__name__) class WebUI(WebPluginBase): - scripts = [get_resource('toggle.js')] def enable(self): diff --git a/deluge/plugins/WebUi/deluge_webui/tests/test_plugin_webui.py b/deluge/plugins/WebUi/deluge_webui/tests/test_plugin_webui.py index 1badedca0..413d25925 100644 --- a/deluge/plugins/WebUi/deluge_webui/tests/test_plugin_webui.py +++ b/deluge/plugins/WebUi/deluge_webui/tests/test_plugin_webui.py @@ -8,7 +8,6 @@ import pytest import pytest_twisted -import deluge.component as component from deluge.core.core import Core from deluge.core.rpcserver import RPCServer from deluge.tests import common @@ -16,10 +15,9 @@ from deluge.tests import common common.disable_new_release_check() -@pytest.mark.usefixtures('component') class TestWebUIPlugin: @pytest_twisted.async_yield_fixture(autouse=True) - async def set_up(self, request): + async def set_up(self, request, component): self = request.instance self.rpcserver = RPCServer(listen=False) self.core = Core() @@ -27,11 +25,9 @@ class TestWebUIPlugin: yield - def on_shutdown(result): - del self.rpcserver - del self.core - - await component.shutdown().addCallback(on_shutdown) + await component.shutdown() + del self.rpcserver + del self.core def test_enable_webui(self): if 'WebUi' not in self.core.get_available_plugins(): diff --git a/deluge/plugins/pluginbase.py b/deluge/plugins/pluginbase.py index 5dda2f077..8d5515690 100644 --- a/deluge/plugins/pluginbase.py +++ b/deluge/plugins/pluginbase.py @@ -14,7 +14,6 @@ log = logging.getLogger(__name__) class PluginBase(component.Component): - update_interval = 1 def __init__(self, name): @@ -35,7 +34,10 @@ class CorePluginBase(PluginBase): log.debug('CorePlugin initialized..') def __del__(self): - component.get('RPCServer').deregister_object(self) + try: + component.get('RPCServer').deregister_object(self) + except KeyError: + log.debug('RPCServer already deregistered') def enable(self): super().enable() @@ -57,7 +59,6 @@ class Gtk3PluginBase(PluginBase): class WebPluginBase(PluginBase): - scripts = [] debug_scripts = [] diff --git a/deluge/scripts/create_deluge_pngs b/deluge/scripts/create_deluge_pngs deleted file mode 100755 index 6ed636db7..000000000 --- a/deluge/scripts/create_deluge_pngs +++ /dev/null @@ -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 diff --git a/deluge/scripts/create_icons.py b/deluge/scripts/create_icons.py new file mode 100755 index 000000000..479505cf5 --- /dev/null +++ b/deluge/scripts/create_icons.py @@ -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() diff --git a/deluge/scripts/create_plugin.py b/deluge/scripts/create_plugin.py index 266747b94..7383661ea 100644 --- a/deluge/scripts/create_plugin.py +++ b/deluge/scripts/create_plugin.py @@ -49,7 +49,6 @@ options = parser.parse_args() def create_plugin(): - if not options.url: options.url = '' diff --git a/deluge/tests/common_web.py b/deluge/tests/common_web.py index 8db49d243..f7da5771a 100644 --- a/deluge/tests/common_web.py +++ b/deluge/tests/common_web.py @@ -31,10 +31,8 @@ class WebServerTestBase(BaseTestCase): return self.start_webapi(None) def start_webapi(self, arg): - self.webserver_listen_port = 8999 - config_defaults = deluge.ui.web.server.CONFIG_DEFAULTS.copy() - config_defaults['port'] = self.webserver_listen_port + config_defaults['port'] = 8999 self.config = configmanager.ConfigManager('web.conf', config_defaults) self.deluge_web = DelugeWeb(daemon=False) diff --git a/deluge/tests/daemon_base.py b/deluge/tests/daemon_base.py index 3ae86c4ca..707570f17 100644 --- a/deluge/tests/daemon_base.py +++ b/deluge/tests/daemon_base.py @@ -4,8 +4,6 @@ # See LICENSE for more details. # -import os.path - import pytest from twisted.internet import defer from twisted.internet.error import CannotListenError @@ -43,15 +41,7 @@ class DaemonBase: port_range=10, extra_callbacks=None, ): - if logfile == '': - logfile = 'daemon_%s.log' % self.id() - - # We are running py.test - if hasattr(pytest, 'config'): - if self.basetemp: - if not os.path.exists(self.basetemp): - os.makedirs(self.basetemp) - logfile = os.path.join(self.basetemp, logfile) + logfile = f'daemon_{self.id()}.log' if logfile == '' else logfile for dummy in range(port_range): try: diff --git a/deluge/tests/data/dir_with_single_file.torrent b/deluge/tests/data/dir_with_single_file.torrent new file mode 100644 index 000000000..33fec2c5f --- /dev/null +++ b/deluge/tests/data/dir_with_single_file.torrent @@ -0,0 +1 @@ +d10:created by13:mktorrent 1.113:creation datei1684991433e4:infod5:filesld6:lengthi9e4:pathl15:single_file.txteee4:name20:dir_with_single_file12:piece lengthi262144e6:pieces20:Wi,=35Yhee
\ No newline at end of file diff --git a/deluge/tests/data/v2_hybrid.torrent b/deluge/tests/data/v2_hybrid.torrent Binary files differnew file mode 100644 index 000000000..e58057cc2 --- /dev/null +++ b/deluge/tests/data/v2_hybrid.torrent diff --git a/deluge/tests/data/v2_test.torrent b/deluge/tests/data/v2_test.torrent Binary files differnew file mode 100644 index 000000000..fe6cbd044 --- /dev/null +++ b/deluge/tests/data/v2_test.torrent diff --git a/deluge/tests/test_alertmanager.py b/deluge/tests/test_alertmanager.py index 5e63864e8..2d18f4bf0 100644 --- a/deluge/tests/test_alertmanager.py +++ b/deluge/tests/test_alertmanager.py @@ -3,33 +3,100 @@ # 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): - return + ... + + self.am.register_handler('dummy1', handler) + self.am.register_handler('dummy2_alert', handler) + 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 - self.am.register_handler('dummy_alert', handler) - assert self.am.handlers['dummy_alert'] == [handler] + 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): - return + ... - self.am.register_handler('dummy_alert', handler) + self.am.register_handler('dummy1', handler) + self.am.register_handler('dummy2_alert', handler) self.am.deregister_handler(handler) - assert self.am.handlers['dummy_alert'] == [] + assert self.am.handlers['dummy1'] == [] + assert self.am.handlers['dummy2'] == [] diff --git a/deluge/tests/test_client.py b/deluge/tests/test_client.py index 5a6727907..763d43c59 100644 --- a/deluge/tests/test_client.py +++ b/deluge/tests/test_client.py @@ -8,7 +8,7 @@ import pytest_twisted 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 @@ class TestClient: 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') diff --git a/deluge/tests/test_common.py b/deluge/tests/test_common.py index e5027ebca..a1af6cce9 100644 --- a/deluge/tests/test_common.py +++ b/deluge/tests/test_common.py @@ -7,6 +7,7 @@ import os import sys import tarfile +from urllib.parse import quote_plus import pytest @@ -19,6 +20,7 @@ from deluge.common import ( fsize, fspeed, ftime, + get_magnet_info, get_path_size, is_infohash, is_interface, @@ -28,6 +30,7 @@ from deluge.common import ( is_ipv6, is_magnet, is_url, + parse_human_size, windows_check, ) @@ -148,26 +151,26 @@ class TestCommon: assert VersionSplit('1.4.0.dev1') < VersionSplit('1.4.0') assert VersionSplit('1.4.0a1') < VersionSplit('1.4.0') - def test_parse_human_size(self): - from deluge.common import parse_human_size - - sizes = [ + @pytest.mark.parametrize( + ('human_size', 'expected'), + [ ('1', 1), ('10 bytes', 10), ('2048 bytes', 2048), ('1MiB', 2 ** (10 * 2)), ('1 MiB', 2 ** (10 * 2)), ('1 GiB', 2 ** (10 * 3)), - ('1 GiB', 2 ** (10 * 3)), + ('1 TiB', 2 ** (10 * 4)), ('1M', 10**6), + ('1p', 10**15), ('1MB', 10**6), ('1 GB', 10**9), ('1 TB', 10**12), - ] - - for human_size, byte_size in sizes: - parsed = parse_human_size(human_size) - assert parsed == byte_size, 'Mismatch when converting: %s' % human_size + ], + ) + def test_parse_human_size(self, human_size, expected): + parsed = parse_human_size(human_size) + assert parsed == expected, 'Mismatch when converting: %s' % human_size def test_archive_files(self): arc_filelist = [ @@ -209,3 +212,16 @@ class TestCommon: if tar_info.name == 'archive_message.txt': result = tar.extractfile(tar_info).read().decode() assert result == 'test' + + def test_get_magnet_info_tiers(self): + tracker1 = 'udp://tracker1.example.com' + tracker2 = 'udp://tracker2.example.com' + magnet = ( + 'magnet:?xt=urn:btih:SU5225URMTUEQLDXQWRB2EQWN6KLTYKN' + f'&tr.1={quote_plus(tracker1)}' + f'&tr.2={quote_plus(tracker2)}' + ) + result = get_magnet_info(magnet) + assert result['info_hash'] == '953bad769164e8482c7785a21d12166f94b9e14d' + assert result['trackers'][tracker1] == 1 + assert result['trackers'][tracker2] == 2 diff --git a/deluge/tests/test_component.py b/deluge/tests/test_component.py index 0345e24d3..907d50beb 100644 --- a/deluge/tests/test_component.py +++ b/deluge/tests/test_component.py @@ -3,6 +3,8 @@ # the additional special exception to link portions of this program with the OpenSSL library. # See LICENSE for more details. # +import time +from unittest.mock import Mock import pytest import pytest_twisted @@ -13,98 +15,50 @@ import deluge.component as component class ComponentTester(component.Component): def __init__(self, name, depend=None): - component.Component.__init__(self, name, depend=depend) - self.start_count = 0 - self.stop_count = 0 - - def start(self): - self.start_count += 1 - - def stop(self): - self.stop_count += 1 + super().__init__(name, depend=depend) + event_methods = ('start', 'update', 'pause', 'resume', 'stop', 'shutdown') + for event_method in event_methods: + setattr(self, event_method, Mock()) class ComponentTesterDelayStart(ComponentTester): - def start(self): - def do_sleep(): - import time - - time.sleep(1) - - d = threads.deferToThread(do_sleep) - - def on_done(result): - self.start_count += 1 - - return d.addCallback(on_done) - - -class ComponentTesterUpdate(component.Component): - def __init__(self, name): - component.Component.__init__(self, name) - self.counter = 0 - self.start_count = 0 - self.stop_count = 0 - - def update(self): - self.counter += 1 - - def stop(self): - self.stop_count += 1 - - -class ComponentTesterShutdown(component.Component): - def __init__(self, name): - component.Component.__init__(self, name) - self.shutdowned = False - self.stop_count = 0 - - def shutdown(self): - self.shutdowned = True + def __init__(self, name, depend=None): + super().__init__(name, depend=depend) + self.start = Mock(side_effect=self.delay) - def stop(self): - self.stop_count += 1 + @pytest_twisted.inlineCallbacks + def delay(self): + yield threads.deferToThread(time.sleep, 0.5) @pytest.mark.usefixtures('component') class TestComponent: - def tear_down(self): - return component.shutdown() + async def test_start_component(self): + c = ComponentTester('test_start') + await component.start(['test_start']) - def test_start_component(self): - def on_start(result, c): - assert c._component_state == 'Started' - assert c.start_count == 1 - - c = ComponentTester('test_start_c1') - d = component.start(['test_start_c1']) - d.addCallback(on_start, c) - return d - - def test_start_stop_depends(self): - def on_stop(result, c1, c2): - assert c1._component_state == 'Stopped' - assert c2._component_state == 'Stopped' - assert c1.stop_count == 1 - assert c2.stop_count == 1 - - def on_start(result, c1, c2): - assert c1._component_state == 'Started' - assert c2._component_state == 'Started' - assert c1.start_count == 1 - assert c2.start_count == 1 - return component.stop(['test_start_depends_c1']).addCallback( - on_stop, c1, c2 - ) + assert c._component_state == 'Started' + assert c.start.call_count == 1 + async def test_start_stop_depends(self): c1 = ComponentTester('test_start_depends_c1') c2 = ComponentTester('test_start_depends_c2', depend=['test_start_depends_c1']) - d = component.start(['test_start_depends_c2']) - d.addCallback(on_start, c1, c2) - return d + await component.start('test_start_depends_c2') + + assert c1._component_state == 'Started' + assert c2._component_state == 'Started' + assert c1.start.call_count == 1 + assert c2.start.call_count == 1 + + await component.stop(['test_start_depends_c1']) - def start_with_depends(self): + assert c1._component_state == 'Stopped' + assert c2._component_state == 'Stopped' + assert c1.stop.call_count == 1 + assert c2.stop.call_count == 1 + + async def start_with_depends(self): c1 = ComponentTesterDelayStart('test_start_all_c1') c2 = ComponentTester('test_start_all_c2', depend=['test_start_all_c4']) c3 = ComponentTesterDelayStart( @@ -113,141 +67,126 @@ class TestComponent: c4 = ComponentTester('test_start_all_c4', depend=['test_start_all_c3']) c5 = ComponentTester('test_start_all_c5') - d = component.start() - return (d, c1, c2, c3, c4, c5) + await component.start() + return c1, c2, c3, c4, c5 def finish_start_with_depends(self, *args): for c in args[1:]: component.deregister(c) - def test_start_all(self): - def on_start(*args): - for c in args[1:]: - assert c._component_state == 'Started' - assert c.start_count == 1 + async def test_start_all(self): + components = await self.start_with_depends() + for c in components: + assert c._component_state == 'Started' + assert c.start.call_count == 1 - ret = self.start_with_depends() - ret[0].addCallback(on_start, *ret[1:]) - ret[0].addCallback(self.finish_start_with_depends, *ret[1:]) - return ret[0] + self.finish_start_with_depends(components) def test_register_exception(self): - ComponentTester('test_register_exception_c1') + ComponentTester('test_register_exception') with pytest.raises(component.ComponentAlreadyRegistered): ComponentTester( - 'test_register_exception_c1', + 'test_register_exception', ) - def test_stop_component(self): - def on_stop(result, c): + async def test_stop(self): + c = ComponentTester('test_stop') + + await component.start(['test_stop']) + + assert c._component_state == 'Started' + + await component.stop(['test_stop']) + + assert c._component_state == 'Stopped' + assert not c._component_timer.running + assert c.stop.call_count == 1 + + async def test_stop_all(self): + components = await self.start_with_depends() + assert all(c._component_state == 'Started' for c in components) + + component.stop() + for c in components: assert c._component_state == 'Stopped' - assert not c._component_timer.running - assert c.stop_count == 1 + assert c.stop.call_count == 1 - def on_start(result, c): - assert c._component_state == 'Started' - return component.stop(['test_stop_component_c1']).addCallback(on_stop, c) - - c = ComponentTesterUpdate('test_stop_component_c1') - d = component.start(['test_stop_component_c1']) - d.addCallback(on_start, c) - return d - - def test_stop_all(self): - def on_stop(result, *args): - for c in args: - assert c._component_state == 'Stopped' - assert c.stop_count == 1 - - def on_start(result, *args): - for c in args: - assert c._component_state == 'Started' - return component.stop().addCallback(on_stop, *args) - - ret = self.start_with_depends() - ret[0].addCallback(on_start, *ret[1:]) - ret[0].addCallback(self.finish_start_with_depends, *ret[1:]) - return ret[0] - - def test_update(self): - def on_start(result, c1, counter): - assert c1._component_timer - assert c1._component_timer.running - assert c1.counter != counter - return component.stop() - - c1 = ComponentTesterUpdate('test_update_c1') - cnt = int(c1.counter) - d = component.start(['test_update_c1']) - - d.addCallback(on_start, c1, cnt) - return d - - def test_pause(self): - def on_pause(result, c1, counter): - assert c1._component_state == 'Paused' - assert c1.counter != counter - assert not c1._component_timer.running - - def on_start(result, c1, counter): - assert c1._component_timer - assert c1.counter != counter - d = component.pause(['test_pause_c1']) - d.addCallback(on_pause, c1, counter) - return d - - c1 = ComponentTesterUpdate('test_pause_c1') - cnt = int(c1.counter) - d = component.start(['test_pause_c1']) - - d.addCallback(on_start, c1, cnt) - return d + self.finish_start_with_depends(components) - @pytest_twisted.inlineCallbacks - def test_component_start_error(self): - ComponentTesterUpdate('test_pause_c1') - yield component.start(['test_pause_c1']) - yield component.pause(['test_pause_c1']) - test_comp = component.get('test_pause_c1') - with pytest.raises(component.ComponentException, match='Current state: Paused'): - yield test_comp._component_start() + async def test_update(self): + c = ComponentTester('test_update') + init_update_count = int(c.update.call_count) + await component.start(['test_update']) - @pytest_twisted.inlineCallbacks - def test_start_paused_error(self): - ComponentTesterUpdate('test_pause_c1') - yield component.start(['test_pause_c1']) - yield component.pause(['test_pause_c1']) - - # Deferreds that fail in component have to error handler which results in - # twisted doing a log.err call which causes the test to fail. - # Prevent failure by ignoring the exception - # self._observer._ignoreErrors(component.ComponentException) - - result = yield component.start() - assert [(result[0][0], result[0][1].value)] == [ + assert c._component_timer + assert c._component_timer.running + assert c.update.call_count != init_update_count + await component.stop() + + async def test_pause(self): + c = ComponentTester('test_pause') + init_update_count = int(c.update.call_count) + + await component.start(['test_pause']) + + assert c._component_timer + assert c.update.call_count != init_update_count + + await component.pause(['test_pause']) + + assert c._component_state == 'Paused' + assert c.pause.call_count == 1 + assert c.update.call_count != init_update_count + assert not c._component_timer.running + + async def test_resume(self): + c = ComponentTester('test_resume') + + await component.start(['test_resume']) + + assert c._component_state == 'Started' + + await component.pause(['test_resume']) + + assert c._component_state == 'Paused' + + await component.resume(['test_resume']) + + assert c._component_state == 'Started' + assert c.resume.call_count == 1 + assert c._component_timer.running + + async def test_component_start_error(self): + ComponentTester('test_start_error') + await component.start(['test_start_error']) + await component.pause(['test_start_error']) + test_comp = component.get('test_start_error') + with pytest.raises(component.ComponentException, match='Current state: Paused'): + await test_comp._component_start() + + async def test_start_paused_error(self): + name = 'test_pause_error' + ComponentTester(name) + await component.start([name]) + await component.pause([name]) + + (failure, error), *_ = await component.start() + assert (failure, error.type, error.value.message) == ( + defer.FAILURE, + component.ComponentException, ( - defer.FAILURE, - component.ComponentException( - 'Trying to start component "%s" but it is ' - 'not in a stopped state. Current state: %s' - % ('test_pause_c1', 'Paused'), - '', - ), - ) - ] - - def test_shutdown(self): - def on_shutdown(result, c1): - assert c1.shutdowned - assert c1._component_state == 'Stopped' - assert c1.stop_count == 1 - - def on_start(result, c1): - d = component.shutdown() - d.addCallback(on_shutdown, c1) - return d - - c1 = ComponentTesterShutdown('test_shutdown_c1') - d = component.start(['test_shutdown_c1']) - d.addCallback(on_start, c1) - return d + f'Trying to start component "{name}" but it is ' + 'not in a stopped state. Current state: Paused' + ), + ) + + async def test_shutdown(self): + c = ComponentTester('test_shutdown') + + await component.start(['test_shutdown']) + await component.shutdown() + + assert c.shutdown.call_count == 1 + assert c._component_state == 'Stopped' + assert not c._component_timer.running + assert c.stop.call_count == 1 diff --git a/deluge/tests/test_config.py b/deluge/tests/test_config.py index 2840dbf5b..146a5c904 100644 --- a/deluge/tests/test_config.py +++ b/deluge/tests/test_config.py @@ -10,7 +10,6 @@ import os from codecs import getwriter import pytest -import pytest_twisted from twisted.internet import task from deluge.common import JSON_FORMAT @@ -84,7 +83,6 @@ class TestConfig: config._save_timer.cancel() - @pytest_twisted.ensureDeferred async def test_on_changed_callback(self, mock_callback): config = Config('test.conf', config_dir=self.config_dir) config.register_change_callback(mock_callback) @@ -93,7 +91,6 @@ class TestConfig: await mock_callback.deferred mock_callback.assert_called_once_with('foo', 1) - @pytest_twisted.ensureDeferred async def test_key_function_callback(self, mock_callback): config = Config( 'test.conf', defaults={'foo': 1, 'bar': 1}, config_dir=self.config_dir diff --git a/deluge/tests/test_core.py b/deluge/tests/test_core.py index f1c2e3be8..28b590250 100644 --- a/deluge/tests/test_core.py +++ b/deluge/tests/test_core.py @@ -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 @@ -116,9 +116,9 @@ class TestCore(BaseTestCase): self.patch( deluge.core.torrentmanager, 'LT_DEFAULT_ADD_TORRENT_FLAGS', - lt.add_torrent_params_flags_t.flag_auto_managed - | lt.add_torrent_params_flags_t.flag_update_subscribe - | lt.add_torrent_params_flags_t.flag_apply_ip_filter, + lt.torrent_flags.auto_managed + | lt.torrent_flags.update_subscribe + | lt.torrent_flags.apply_ip_filter, ) options = {'add_paused': paused, 'auto_managed': False} filepath = common.get_test_data_file(filename) @@ -188,7 +188,6 @@ class TestCore(BaseTestCase): assert torrent_id == info_hash assert not os.path.isfile(mock_mkstemp[1]) - @pytest_twisted.ensureDeferred async def test_add_torrent_url_with_cookie(self): url = 'http://localhost:%d/cookie' % self.listen_port options = {} @@ -201,7 +200,6 @@ class TestCore(BaseTestCase): result = await self.core.add_torrent_url(url, options, headers) assert result == info_hash - @pytest_twisted.ensureDeferred async def test_add_torrent_url_with_redirect(self): url = 'http://localhost:%d/redirect' % self.listen_port options = {} @@ -210,7 +208,6 @@ class TestCore(BaseTestCase): result = await self.core.add_torrent_url(url, options) assert result == info_hash - @pytest_twisted.ensureDeferred async def test_add_torrent_url_with_partial_download(self): url = 'http://localhost:%d/partial' % self.listen_port options = {} @@ -222,10 +219,15 @@ class TestCore(BaseTestCase): @pytest_twisted.inlineCallbacks def test_add_torrent_magnet(self): info_hash = '60d5d82328b4547511fdeac9bf4d0112daa0ce00' - uri = deluge.common.create_magnet_uri(info_hash) + tracker = 'udp://tracker.example.com' + name = 'test magnet' + uri = deluge.common.create_magnet_uri(info_hash, name=name, trackers=[tracker]) options = {} torrent_id = yield self.core.add_torrent_magnet(uri, options) assert torrent_id == info_hash + torrent_status = self.core.get_torrent_status(torrent_id, ['name', 'trackers']) + assert torrent_status['trackers'][0]['url'] == tracker + assert torrent_status['name'] == name def test_resume_torrent(self): tid1 = self.add_torrent('test.torrent', paused=True) @@ -481,3 +483,29 @@ class TestCore(BaseTestCase): 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) diff --git a/deluge/tests/test_httpdownloader.py b/deluge/tests/test_httpdownloader.py index 8c491b68a..1c2704560 100644 --- a/deluge/tests/test_httpdownloader.py +++ b/deluge/tests/test_httpdownloader.py @@ -176,18 +176,15 @@ class TestDownloadFile: pytest.fail(ex) return filename - @pytest_twisted.ensureDeferred async def test_download(self): filename = await download_file(self.get_url(), fname('index.html')) assert filename == fname('index.html') - @pytest_twisted.ensureDeferred async def test_download_without_required_cookies(self): url = self.get_url('cookie') filename = await download_file(url, fname('none')) self.assert_contains(filename, 'Password cookie not set!') - @pytest_twisted.ensureDeferred async def test_download_with_required_cookies(self): url = self.get_url('cookie') cookie = {'cookie': 'password=deluge'} @@ -195,14 +192,12 @@ class TestDownloadFile: assert filename == fname('monster') self.assert_contains(filename, 'COOKIE MONSTER!') - @pytest_twisted.ensureDeferred async def test_download_with_rename(self): url = self.get_url('rename?filename=renamed') filename = await download_file(url, fname('original')) assert filename == fname('renamed') self.assert_contains(filename, 'This file should be called renamed') - @pytest_twisted.ensureDeferred async def test_download_with_rename_exists(self): open(fname('renamed'), 'w').close() url = self.get_url('rename?filename=renamed') @@ -210,34 +205,29 @@ class TestDownloadFile: assert filename == fname('renamed-1') self.assert_contains(filename, 'This file should be called renamed') - @pytest_twisted.ensureDeferred async def test_download_with_rename_sanitised(self): url = self.get_url('rename?filename=/etc/passwd') filename = await download_file(url, fname('original')) assert filename == fname('passwd') self.assert_contains(filename, 'This file should be called /etc/passwd') - @pytest_twisted.ensureDeferred async def test_download_with_attachment_no_filename(self): url = self.get_url('attachment') filename = await download_file(url, fname('original')) assert filename == fname('original') self.assert_contains(filename, 'Attachment with no filename set') - @pytest_twisted.ensureDeferred async def test_download_with_rename_prevented(self): url = self.get_url('rename?filename=spam') filename = await download_file(url, fname('forced'), force_filename=True) assert filename == fname('forced') self.assert_contains(filename, 'This file should be called spam') - @pytest_twisted.ensureDeferred async def test_download_with_gzip_encoding(self): url = self.get_url('gzip?msg=success') filename = await download_file(url, fname('gzip_encoded')) self.assert_contains(filename, 'success') - @pytest_twisted.ensureDeferred async def test_download_with_gzip_encoding_disabled(self): url = self.get_url('gzip?msg=unzip') filename = await download_file( @@ -245,32 +235,27 @@ class TestDownloadFile: ) self.assert_contains(filename, 'unzip') - @pytest_twisted.ensureDeferred async def test_page_redirect_unhandled(self): url = self.get_url('redirect') with pytest.raises(PageRedirect): await download_file(url, fname('none'), handle_redirects=False) - @pytest_twisted.ensureDeferred async def test_page_redirect(self): url = self.get_url('redirect') filename = await download_file(url, fname('none'), handle_redirects=True) assert filename == fname('none') - @pytest_twisted.ensureDeferred async def test_page_not_found(self): with pytest.raises(Error): await download_file(self.get_url('page/not/found'), fname('none')) @pytest.mark.xfail(reason="Doesn't seem like httpdownloader ever implemented this.") - @pytest_twisted.ensureDeferred async def test_page_not_modified(self): headers = {'If-Modified-Since': formatdate(usegmt=True)} with pytest.raises(Error) as exc_info: await download_file(self.get_url(), fname('index.html'), headers=headers) assert exc_info.value.status == NOT_MODIFIED - @pytest_twisted.ensureDeferred async def test_download_text_reencode_charset(self): """Re-encode as UTF-8 specified charset for text content-type header""" url = self.get_url('attachment') @@ -280,7 +265,6 @@ class TestDownloadFile: assert filename == filepath self.assert_contains(filename, 'Attachment with no filename setбвгде') - @pytest_twisted.ensureDeferred async def test_download_binary_ignore_charset(self): """Ignore charset for binary content-type header e.g. torrent files""" url = self.get_url('torrent') diff --git a/deluge/tests/test_json_api.py b/deluge/tests/test_json_api.py index 41efb0206..ef21e9410 100644 --- a/deluge/tests/test_json_api.py +++ b/deluge/tests/test_json_api.py @@ -11,6 +11,7 @@ from unittest.mock import MagicMock import pytest import pytest_twisted +from twisted.internet.defer import Deferred from twisted.web import server from twisted.web.http import Request @@ -29,7 +30,6 @@ common.disable_new_release_check() @pytest.mark.usefixtures('daemon', 'client', 'component') class TestJSON: - @pytest_twisted.ensureDeferred async def test_get_remote_methods(self): json = JSON() methods = await json.get_remote_methods() @@ -150,7 +150,6 @@ class TestRPCRaiseDelugeErrorJSON: daemon.rpcserver.register_object(test) """ - @pytest_twisted.ensureDeferred async def test_handle_request_method_raise_delugeerror(self): json = JSON() @@ -195,7 +194,6 @@ class TestJSONRequestFailed(WebServerMockBase): test = TestClass() daemon.rpcserver.register_object(test) """ - from twisted.internet.defer import Deferred extra_callback = { 'deferred': Deferred(), @@ -210,18 +208,19 @@ class TestJSONRequestFailed(WebServerMockBase): } def on_test_raise(*args): - assert 'Unhandled error in Deferred:' in self.core.stderr_out - assert 'in test_raise_error' in self.core.stderr_out + assert 'Unhandled error in Deferred:' in daemon.stderr_out + assert 'in test_raise_error' in daemon.stderr_out - extra_callback['deferred'].addCallback(on_test_raise) d, daemon = common.start_core( custom_script=custom_script, - print_stdout=False, + print_stdout=True, print_stderr=False, timeout=5, extra_callbacks=[extra_callback], config_directory=config_dir, ) + extra_callback['deferred'].addCallback(on_test_raise, daemon) + await d yield await daemon.kill() diff --git a/deluge/tests/test_maybe_coroutine.py b/deluge/tests/test_maybe_coroutine.py index 2717e78bb..afaf171ba 100644 --- a/deluge/tests/test_maybe_coroutine.py +++ b/deluge/tests/test_maybe_coroutine.py @@ -139,7 +139,6 @@ def test_error_from_inline(function): inline_func_from_coro, ], ) -@pytest_twisted.ensureDeferred async def test_from_coro(function): """Test our coroutines wrapped with maybe_coroutine work from another coroutine.""" result = await function() @@ -156,14 +155,12 @@ async def test_from_coro(function): inline_error_from_coro, ], ) -@pytest_twisted.ensureDeferred async def test_error_from_coro(function): """Test our coroutines wrapped with maybe_coroutine work from another coroutine with errors.""" with pytest.raises(Exception, match='function_error'): await function() -@pytest_twisted.ensureDeferred async def test_tracebacks_preserved(): with pytest.raises(Exception) as exc: await coro_error_from_coro() @@ -178,13 +175,11 @@ async def test_tracebacks_preserved(): assert expected in str(actual) -@pytest_twisted.ensureDeferred async def test_maybe_deferred_coroutine(): result = await maybeDeferred(coro_func) assert result == 'function_result' -@pytest_twisted.ensureDeferred async def test_callback_before_await(): def cb(res): assert res == 'function_result' @@ -196,7 +191,6 @@ async def test_callback_before_await(): assert result == 'function_result' -@pytest_twisted.ensureDeferred async def test_callback_after_await(): """If it has already been used as a coroutine, can't be retroactively turned into a Deferred. This limitation could be fixed, but the extra complication doesn't feel worth it. diff --git a/deluge/tests/test_metafile.py b/deluge/tests/test_metafile.py index fda1cb73e..1b1675052 100644 --- a/deluge/tests/test_metafile.py +++ b/deluge/tests/test_metafile.py @@ -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 @@ class TestMetafile: 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 diff --git a/deluge/tests/test_rpcserver.py b/deluge/tests/test_rpcserver.py index 982d1d5f1..77c9f1e9b 100644 --- a/deluge/tests/test_rpcserver.py +++ b/deluge/tests/test_rpcserver.py @@ -19,7 +19,6 @@ setup_logger('none') class DelugeRPCProtocolTester(DelugeRPCProtocol): - messages = [] def transfer_message(self, data): diff --git a/deluge/tests/test_security.py b/deluge/tests/test_security.py index e3e434433..c472d1630 100644 --- a/deluge/tests/test_security.py +++ b/deluge/tests/test_security.py @@ -46,7 +46,6 @@ class SecurityBaseTestCase: ) def on_result(results): - if test == '-e': results = results[0].split(b'\n')[7:-6] assert len(results) > 3 @@ -134,10 +133,10 @@ class TestDaemonSecurity(BaseTestCase, DaemonBase, SecurityBaseTestCase): @pytest.mark.security class TestWebUISecurity(WebServerTestBase, SecurityBaseTestCase): def start_webapi(self, arg): - self.port = self.webserver_listen_port = 8999 + self.port = self.deluge_web.port = 8999 config_defaults = deluge.ui.web.server.CONFIG_DEFAULTS.copy() - config_defaults['port'] = self.webserver_listen_port + config_defaults['port'] = self.deluge_web.port config_defaults['https'] = True self.config = configmanager.ConfigManager('web.conf', config_defaults) diff --git a/deluge/tests/test_sessionproxy.py b/deluge/tests/test_sessionproxy.py index 6fbbb248b..86289ccb8 100644 --- a/deluge/tests/test_sessionproxy.py +++ b/deluge/tests/test_sessionproxy.py @@ -5,7 +5,6 @@ # the additional special exception to link portions of this program with the OpenSSL library. # See LICENSE for more details. # -import pytest_twisted from twisted.internet.defer import maybeDeferred, succeed from twisted.internet.task import Clock @@ -125,25 +124,21 @@ class TestSessionProxy(BaseTestCase): def test_startup(self): assert client.core.torrents['a'] == self.sp.torrents['a'][1] - @pytest_twisted.ensureDeferred async def test_get_torrent_status_no_change(self): result = await self.sp.get_torrent_status('a', []) assert result == client.core.torrents['a'] - @pytest_twisted.ensureDeferred async def test_get_torrent_status_change_with_cache(self): client.core.torrents['a']['key1'] = 2 result = await self.sp.get_torrent_status('a', ['key1']) assert result == {'key1': 1} - @pytest_twisted.ensureDeferred async def test_get_torrent_status_change_without_cache(self): client.core.torrents['a']['key1'] = 2 self.clock.advance(self.sp.cache_time + 0.1) result = await self.sp.get_torrent_status('a', []) assert result == client.core.torrents['a'] - @pytest_twisted.ensureDeferred async def test_get_torrent_status_key_not_updated(self): self.clock.advance(self.sp.cache_time + 0.1) self.sp.get_torrent_status('a', ['key1']) @@ -151,7 +146,6 @@ class TestSessionProxy(BaseTestCase): result = await self.sp.get_torrent_status('a', ['key2']) assert result == {'key2': 99} - @pytest_twisted.ensureDeferred async def test_get_torrents_status_key_not_updated(self): self.clock.advance(self.sp.cache_time + 0.1) self.sp.get_torrents_status({'id': ['a']}, ['key1']) diff --git a/deluge/tests/test_torrent.py b/deluge/tests/test_torrent.py index 36adc0fde..62886159e 100644 --- a/deluge/tests/test_torrent.py +++ b/deluge/tests/test_torrent.py @@ -10,7 +10,6 @@ from base64 import b64encode from unittest import mock import pytest -import pytest_twisted from twisted.internet import defer, reactor from twisted.internet.task import deferLater @@ -25,6 +24,11 @@ from deluge.core.rpcserver import RPCServer from deluge.core.torrent import Torrent from deluge.core.torrentmanager import TorrentManager, TorrentState +try: + from unittest.mock import AsyncMock +except ImportError: + from mock import AsyncMock + class TestTorrent(BaseTestCase): def setup_config(self): @@ -62,9 +66,22 @@ class TestTorrent(BaseTestCase): print(tmp) def assert_state(self, torrent, state): + """Assert torrent state matches expected state""" torrent.update_state() assert torrent.state == state + def assert_state_wait(self, torrent, expected, timeout=1, interval=0.2): + """Assert state but retry with timeout e.g. Allow for async lt alerts""" + start = time.time() + + while time.time() - start < timeout: + torrent.update_state() + time.sleep(interval) + if torrent.state == expected: + break + else: + assert torrent.state == expected + def get_torrent_atp(self, filename): filename = common.get_test_data_file(filename) with open(filename, 'rb') as _file: @@ -74,14 +91,12 @@ class TestTorrent(BaseTestCase): 'save_path': os.getcwd(), 'storage_mode': lt.storage_mode_t.storage_mode_sparse, 'flags': ( - lt.add_torrent_params_flags_t.flag_auto_managed - | lt.add_torrent_params_flags_t.flag_duplicate_is_error - & ~lt.add_torrent_params_flags_t.flag_paused + lt.torrent_flags.auto_managed + | lt.torrent_flags.duplicate_is_error & ~lt.torrent_flags.paused ), } return atp - @pytest_twisted.ensureDeferred async def test_set_file_priorities(self): if getattr(lt, 'file_prio_alert', None): # Libtorrent 2.0.3 and later has a file_prio_alert @@ -191,13 +206,12 @@ class TestTorrent(BaseTestCase): torrent_id = self.core.add_torrent_file(filename, filedump, options) torrent = self.core.torrentmanager.torrents[torrent_id] - # time.sleep(0.5) # Delay to wait for lt to finish check on Travis. - # self.assert_state(torrent, 'Seeding') + # Inital check will fail and return to download state + self.assert_state_wait(torrent, 'Downloading') # Force an error by reading (non-existant) piece from disk torrent.handle.read_piece(0) - time.sleep(0.2) # Delay to wait for alert from lt - self.assert_state(torrent, 'Error') + self.assert_state_wait(torrent, 'Error') def test_torrent_error_resume_original_state(self): options = {'seed_mode': True, 'add_paused': True} @@ -212,8 +226,7 @@ class TestTorrent(BaseTestCase): # Force an error by reading (non-existant) piece from disk torrent.handle.read_piece(0) - time.sleep(0.2) # Delay to wait for alert from lt - self.assert_state(torrent, 'Error') + self.assert_state_wait(torrent, 'Error') # Clear error and verify returned to original state torrent.force_recheck() @@ -341,7 +354,7 @@ class TestTorrent(BaseTestCase): handle = self.session.add_torrent(atp) self.torrent = Torrent(handle, {}) # Ignore TorrentManager method call - TorrentManager.save_resume_data = mock.MagicMock + TorrentManager.save_resume_data = AsyncMock() result = self.torrent.rename_folder('unicode_filenames', 'Горбачёв') assert isinstance(result, defer.DeferredList) diff --git a/deluge/tests/test_torrentmanager.py b/deluge/tests/test_torrentmanager.py index 0ead27230..1a5e3a930 100644 --- a/deluge/tests/test_torrentmanager.py +++ b/deluge/tests/test_torrentmanager.py @@ -64,7 +64,6 @@ class TestTorrentmanager(BaseTestCase): torrent_id = yield self.core.add_torrent_magnet(magnet, options) assert self.tm.remove(torrent_id, False) - @pytest_twisted.ensureDeferred async def test_prefetch_metadata(self): from deluge._libtorrent import lt @@ -119,7 +118,6 @@ class TestTorrentmanager(BaseTestCase): ) assert expected == await d - @pytest_twisted.ensureDeferred async def test_prefetch_metadata_timeout(self): magnet = 'magnet:?xt=urn:btih:ab570cdd5a17ea1b61e970bb72047de141bce173' d = self.tm.prefetch_metadata(magnet, 30) diff --git a/deluge/tests/test_torrentview.py b/deluge/tests/test_torrentview.py index 8d0568866..9da99d849 100644 --- a/deluge/tests/test_torrentview.py +++ b/deluge/tests/test_torrentview.py @@ -35,7 +35,6 @@ setup_translation() @pytest.mark.gtkui class TestTorrentview(BaseTestCase): - default_column_index = [ 'filter', 'torrent_id', diff --git a/deluge/tests/test_tracker_icons.py b/deluge/tests/test_tracker_icons.py index 2f793d12e..57cc13822 100644 --- a/deluge/tests/test_tracker_icons.py +++ b/deluge/tests/test_tracker_icons.py @@ -6,7 +6,6 @@ import os.path import pytest -import pytest_twisted import deluge.component as component import deluge.ui.tracker_icons @@ -28,7 +27,6 @@ class TestTrackerIcons(BaseTestCase): def tear_down(self): return component.shutdown() - @pytest_twisted.ensureDeferred async def test_get_deluge_png(self, mock_mkstemp): # Deluge has a png favicon link icon = TrackerIcon(common.get_test_data_file('deluge.png')) @@ -36,7 +34,6 @@ class TestTrackerIcons(BaseTestCase): assert result == icon assert not os.path.isfile(mock_mkstemp[1]) - @pytest_twisted.ensureDeferred async def test_get_google_ico(self): # Google doesn't have any icon links # So instead we'll grab its favicon.ico @@ -44,14 +41,12 @@ class TestTrackerIcons(BaseTestCase): result = await self.icons.fetch('www.google.com') assert result == icon - @pytest_twisted.ensureDeferred async def test_get_google_ico_hebrew(self): """Test that Google.co.il page is read as UTF-8""" icon = TrackerIcon(common.get_test_data_file('google.ico')) result = await self.icons.fetch('www.google.co.il') assert result == icon - @pytest_twisted.ensureDeferred async def test_get_google_ico_with_redirect(self): # google.com redirects to www.google.com icon = TrackerIcon(common.get_test_data_file('google.ico')) @@ -59,19 +54,16 @@ class TestTrackerIcons(BaseTestCase): assert result == icon @pytest.mark.skip(reason='Site removed favicon, new SNI test will be needed') - @pytest_twisted.ensureDeferred async def test_get_seo_svg_with_sni(self): # seo using certificates with SNI support only icon = TrackerIcon(common.get_test_data_file('seo.svg')) result = await self.icons.fetch('www.seo.com') assert result == icon - @pytest_twisted.ensureDeferred async def test_get_empty_string_tracker(self): result = await self.icons.fetch('') assert result is None - @pytest_twisted.ensureDeferred async def test_invalid_host(self, mock_mkstemp): """Test that TrackerIcon can handle invalid hostname""" result = await self.icons.fetch('deluge.example.com') diff --git a/deluge/tests/test_ui_common.py b/deluge/tests/test_ui_common.py index ee97259de..87a4a2c04 100644 --- a/deluge/tests/test_ui_common.py +++ b/deluge/tests/test_ui_common.py @@ -44,7 +44,7 @@ class TestUICommon: ti = TorrentInfo(filename, filetree=1) assert ti.files_tree == files_tree - filestree2 = { + files_tree2 = { 'contents': { 'torrent_filehash': { 'type': 'dir', @@ -71,7 +71,7 @@ class TestUICommon: 'type': 'dir', } ti = TorrentInfo(filename, filetree=2) - assert ti.files_tree == filestree2 + assert ti.files_tree == files_tree2 def test_hash_optional_md5sum(self): # Ensure `md5sum` key is not included in filetree output @@ -157,3 +157,134 @@ class TestUICommon: ] assert len(ti.files) == len(result_files) + + def test_directory_with_single_file(self): + filename = common.get_test_data_file('dir_with_single_file.torrent') + + ti = TorrentInfo(filename) + expected_file_tree = {'dir_with_single_file': {'single_file.txt': (0, 9, True)}} + assert ti.files_tree == expected_file_tree + + result_files = [ + { + 'path': 'dir_with_single_file/single_file.txt', + 'size': 9, + 'download': True, + } + ] + assert ti.files == result_files + + def test_bittorrent_v2_path(self): + filename = common.get_test_data_file('v2_test.torrent') + files_tree = { + 'torrent_test': { + 'small.txt': (0, 22, True), + '還在一個人無聊嗎~還不趕緊上來聊天美.txt': (1, 32, True), + } + } + ti = TorrentInfo(filename, filetree=1) + assert ti.files_tree == files_tree + + files_tree2 = { + 'contents': { + 'torrent_test': { + 'type': 'dir', + 'contents': { + 'small.txt': { + 'type': 'file', + 'path': 'torrent_test/small.txt', + 'length': 22, + 'index': 0, + 'download': True, + }, + '還在一個人無聊嗎~還不趕緊上來聊天美.txt': { + 'type': 'file', + 'path': 'torrent_test/還在一個人無聊嗎~還不趕緊上來聊天美.txt', + 'length': 32, + 'index': 1, + 'download': True, + }, + }, + 'length': 54, + 'download': True, + } + }, + 'type': 'dir', + } + ti = TorrentInfo(filename, filetree=2) + assert ti.files_tree == files_tree2 + + def test_bittorrent_v2_hybrid_path(self): + filename = common.get_test_data_file('v2_hybrid.torrent') + files_tree = { + 'torrent_test': { + 'small.txt': (0, 22, True), + '還在一個人無聊嗎~還不趕緊上來聊天美.txt': (2, 32, True), + '.pad': { + '16362': (1, 16362, True), + '16352': (3, 16352, True), + }, + } + } + ti = TorrentInfo(filename, filetree=1, force_bt_version=1) + assert ti.files_tree == files_tree + del files_tree['torrent_test']['.pad'] + files_tree['torrent_test']['還在一個人無聊嗎~還不趕緊上來聊天美.txt'] = (1, 32, True) + ti = TorrentInfo(filename, filetree=1, force_bt_version=2) + assert ti.files_tree == files_tree + + files_tree2 = { + 'contents': { + 'torrent_test': { + 'type': 'dir', + 'contents': { + 'small.txt': { + 'type': 'file', + 'path': 'torrent_test/small.txt', + 'length': 22, + 'index': 0, + 'download': True, + }, + '還在一個人無聊嗎~還不趕緊上來聊天美.txt': { + 'type': 'file', + 'path': 'torrent_test/還在一個人無聊嗎~還不趕緊上來聊天美.txt', + 'length': 32, + 'index': 2, + 'download': True, + }, + '.pad': { + 'type': 'dir', + 'contents': { + '16362': { + 'type': 'file', + 'path': 'torrent_test/.pad/16362', + 'length': 16362, + 'index': 1, + 'download': True, + }, + '16352': { + 'type': 'file', + 'path': 'torrent_test/.pad/16352', + 'length': 16352, + 'index': 3, + 'download': True, + }, + }, + 'length': 32714, + 'download': True, + }, + }, + 'length': 32768, + 'download': True, + } + }, + 'type': 'dir', + } + ti = TorrentInfo(filename, filetree=2, force_bt_version=1) + assert ti.files_tree == files_tree2 + torrent_test = files_tree2['contents']['torrent_test'] + torrent_test['length'] -= torrent_test['contents']['.pad']['length'] + del torrent_test['contents']['.pad'] + torrent_test['contents']['還在一個人無聊嗎~還不趕緊上來聊天美.txt']['index'] = 1 + ti = TorrentInfo(filename, filetree=2, force_bt_version=2) + assert ti.files_tree == files_tree2 diff --git a/deluge/tests/test_ui_entry.py b/deluge/tests/test_ui_entry.py index 0546ad7b8..9a1330ed5 100644 --- a/deluge/tests/test_ui_entry.py +++ b/deluge/tests/test_ui_entry.py @@ -58,7 +58,7 @@ class StringFileDescriptor: class UIBaseTestCase: def set_up(self): - common.setup_test_logger(level='info', prefix=self.id()) + common.setup_test_logger(level='info', prefix=self.config_dir / self.id()) return component.start() def tear_down(self): @@ -75,7 +75,7 @@ class UIWithDaemonBaseTestCase(UIBaseTestCase, DaemonBase): def set_up(self): d = self.common_set_up() - common.setup_test_logger(level='info', prefix=self.id()) + common.setup_test_logger(level='info', prefix=self.config_dir / self.id()) return d @@ -386,7 +386,6 @@ class ConsoleUIWithDaemonBaseTestCase(UIWithDaemonBaseTestCase): f'move_completed_path: {tmp_path}\nmove_completed: True\n' ) - @pytest_twisted.ensureDeferred async def test_console_command_status(self): fd = StringFileDescriptor(sys.stdout) self.patch_arg_command(['status']) @@ -416,7 +415,7 @@ class TestConsoleScriptEntryWithDaemon(BaseTestCase, ConsoleUIWithDaemonBaseTest def set_var(self, request): request.cls.var = { 'cmd_name': 'deluge-console', - 'start_cmd': deluge.ui.console.start, + 'start_cmd': deluge.ui.console.test_start, 'sys_arg_cmd': ['./deluge-console'], } diff --git a/deluge/tests/test_web_api.py b/deluge/tests/test_web_api.py index 56f86aa56..814fecf8c 100644 --- a/deluge/tests/test_web_api.py +++ b/deluge/tests/test_web_api.py @@ -26,7 +26,6 @@ common.disable_new_release_check() class TestWebAPI(WebServerTestBase): @pytest.mark.xfail(reason='This just logs an error at the moment.') - @pytest_twisted.ensureDeferred async def test_connect_invalid_host(self): with pytest.raises(Exception): await self.deluge_web.web_api.connect('id') @@ -58,7 +57,7 @@ class TestWebAPI(WebServerTestBase): def test_get_config(self): config = self.deluge_web.web_api.get_config() - assert self.webserver_listen_port == config['port'] + assert self.deluge_web.port == config['port'] def test_set_config(self): config = self.deluge_web.web_api.get_config() @@ -175,7 +174,7 @@ class TestWebAPI(WebServerTestBase): self.deluge_web.top_level.putChild( filename.encode(), File(common.get_test_data_file(filename)) ) - url = 'http://localhost:%d/%s' % (self.webserver_listen_port, filename) + url = 'http://localhost:%d/%s' % (self.deluge_web.port, filename) res = yield self.deluge_web.web_api.download_torrent_from_url(url) assert res.endswith(filename) @@ -191,7 +190,7 @@ class TestWebAPI(WebServerTestBase): bad_body = b'{ method": "auth.login" }' d = yield agent.request( b'POST', - b'http://127.0.0.1:%i/json' % self.webserver_listen_port, + b'http://127.0.0.1:%i/json' % self.deluge_web.port, Headers( { b'User-Agent': [b'Twisted Web Client Example'], diff --git a/deluge/tests/test_webserver.py b/deluge/tests/test_webserver.py index e1588fdf3..9503f506e 100644 --- a/deluge/tests/test_webserver.py +++ b/deluge/tests/test_webserver.py @@ -9,7 +9,7 @@ import json as json_lib from io import BytesIO -import pytest_twisted +import pytest import twisted.web.client from twisted.internet import reactor from twisted.web.client import Agent, FileBodyProducer @@ -23,9 +23,7 @@ common.disable_new_release_check() class TestWebServer(WebServerTestBase, WebServerMockBase): - @pytest_twisted.inlineCallbacks - def test_get_torrent_info(self): - + async def test_get_torrent_info(self): agent = Agent(reactor) self.mock_authentication_ignore(self.deluge_web.auth) @@ -42,15 +40,15 @@ class TestWebServer(WebServerTestBase, WebServerMockBase): b'User-Agent': ['Twisted Web Client Example'], b'Content-Type': ['application/json'], } - url = 'http://127.0.0.1:%s/json' % self.webserver_listen_port + url = 'http://127.0.0.1:%s/json' % self.deluge_web.port - d = yield agent.request( + response = await agent.request( b'POST', - url.encode('utf-8'), + url.encode(), Headers(headers), - FileBodyProducer(BytesIO(input_file.encode('utf-8'))), + FileBodyProducer(BytesIO(input_file.encode())), ) - body = yield twisted.web.client.readBody(d) + body = await twisted.web.client.readBody(response) try: json = json_lib.loads(body.decode()) @@ -58,3 +56,53 @@ class TestWebServer(WebServerTestBase, WebServerMockBase): print('aoeu') assert json['error'] is None assert 'torrent_filehash' == json['result']['name'] + + @pytest.mark.parametrize('base', ['', '/', 'deluge']) + async def test_base_with_config(self, base): + agent = Agent(reactor) + root_url = f'http://127.0.0.1:{self.deluge_web.port}' + base_url = f'{root_url}/{base}' + + self.deluge_web.base = base + + response = await agent.request(b'GET', root_url.encode()) + assert response.code == 200 + body = await twisted.web.client.readBody(response) + assert 'Deluge WebUI' in body.decode() + + response = await agent.request(b'GET', base_url.encode()) + assert response.code == 200 + + @pytest.mark.parametrize('base', ['/', 'deluge']) + async def test_base_with_config_recurring_basepath(self, base): + agent = Agent(reactor) + base_url = f'http://127.0.0.1:{self.deluge_web.port}/{base}' + + self.deluge_web.base = base + + response = await agent.request(b'GET', base_url.encode()) + assert response.code == 200 + + recursive_url = f'{base_url}/{base}' + response = await agent.request(b'GET', recursive_url.encode()) + assert response.code == 404 if base.strip('/') else 200 + + recursive_url = f'{recursive_url}/{base}' + response = await agent.request(b'GET', recursive_url.encode()) + assert response.code == 404 if base.strip('/') else 200 + + async def test_base_with_deluge_header(self): + """Ensure base path is set and HTML contains path""" + agent = Agent(reactor) + base = 'deluge' + url = f'http://127.0.0.1:{self.deluge_web.port}' + headers = Headers({'X-Deluge-Base': [base]}) + + response = await agent.request(b'GET', url.encode(), headers) + body = await twisted.web.client.readBody(response) + assert f'href="/{base}/' in body.decode() + + # Header only changes HTML base path so ensure no resource at server path + url = f'{url}/{base}' + response = await agent.request(b'GET', url.encode(), headers) + assert response.code == 404 diff --git a/deluge/ui/client.py b/deluge/ui/client.py index 6b657d5ca..0fef66767 100644 --- a/deluge/ui/client.py +++ b/deluge/ui/client.py @@ -15,7 +15,7 @@ from twisted.internet import defer, reactor, ssl 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 @@ class DelugeRPCClientFactory(ClientFactory): 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 @@ class DaemonSSLProxy(DaemonProxy): self.host = None self.port = None self.username = None + self.daemon_version = None self.authentication_level = 0 self.connected = False @@ -389,7 +391,7 @@ class DaemonSSLProxy(DaemonProxy): 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 @@ class Client: 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. diff --git a/deluge/ui/common.py b/deluge/ui/common.py index f9f774e23..64d5ca216 100644 --- a/deluge/ui/common.py +++ b/deluge/ui/common.py @@ -13,6 +13,7 @@ The ui common module contains methods and classes that are deemed useful for all import logging import os from hashlib import sha1 as sha +from typing import Tuple from deluge import bencode from deluge.common import decode_bytes @@ -171,10 +172,11 @@ class TorrentInfo: filename (str, optional): The path to the .torrent file. filetree (int, optional): The version of filetree to create (defaults to 1). torrent_file (dict, optional): A bdecoded .torrent file contents. + force_bt_version (int, optional): The BitTorrent spec to use for parsing (defaults to 1). """ - def __init__(self, filename='', filetree=1, torrent_file=None): + def __init__(self, filename='', filetree=1, torrent_file=None, force_bt_version=1): self._filedata = None if torrent_file: self._metainfo = torrent_file @@ -211,12 +213,27 @@ class TorrentInfo: else: self._name = decode_bytes(info_dict['name'], encoding) + meta_version = info_dict['meta version'] if 'meta version' in info_dict else -1 + is_hybrid = 'files' in info_dict and meta_version == 2 + + parse_v1 = False + parse_v2 = False + if is_hybrid: + if force_bt_version == 1: + parse_v1 = True + elif force_bt_version == 2: + parse_v2 = True + elif 'files' in info_dict: + parse_v1 = True + elif meta_version == 2 and 'file tree' in info_dict: + parse_v2 = True + # Get list of files from torrent info self._files = [] - if 'files' in info_dict: + if parse_v1: paths = {} dirs = {} - prefix = self._name if len(info_dict['files']) > 1 else '' + prefix = self._name for index, f in enumerate(info_dict['files']): f = {k.decode(): v for k, v in f.items()} @@ -245,25 +262,67 @@ class TorrentInfo: if filetree == 2: - def walk(path, item): + def walk(full_path, item): if item['type'] == 'dir': - item.update(dirs[path]) + item.update(dirs[full_path]) else: - item.update(paths[path]) + item.update(paths[full_path]) item['download'] = True file_tree = FileTree2(list(paths)) file_tree.walk(walk) else: - def walk(path, item): + def walk(full_path, item): if isinstance(item, dict): return item - return [paths[path]['index'], paths[path]['length'], True] + return [paths[full_path]['index'], paths[full_path]['length'], True] file_tree = FileTree(paths) file_tree.walk(walk) self._files_tree = file_tree.get_tree() + elif parse_v2: + + def single_file_torrent(inner_info_dict): + if len(inner_info_dict['file tree']) > 1: + return False + + file_name = [key for key in inner_info_dict['file tree']][0] + return inner_info_dict['name'] == file_name + + if not single_file_torrent(info_dict): + info_dict['file tree'] = {info_dict['name']: info_dict['file tree']} + + if filetree == 2: + + def walk(full_path, item): + if item['type'] == 'file': + item['path'] = full_path + self._files.append( + { + 'path': full_path, + 'size': item['length'], + 'download': True, + } + ) + item['download'] = True + + file_tree = FileTree2BTv2(info_dict['file tree']) + file_tree.walk(walk) + else: + + def walk(full_path, item): + if isinstance(item, dict): + return item + self._files.append( + {'path': full_path, 'size': item[1], 'download': True} + ) + return [item[0], item[1], True] + + file_tree = FiletreeBTv2(info_dict['file tree']) + file_tree.walk(walk) + + self._files_tree = file_tree.get_tree() else: self._files.append( {'path': self._name, 'size': info_dict['length'], 'download': True} @@ -386,13 +445,31 @@ class TorrentInfo: class FileTree2: """ - Converts a list of paths in to a file tree. + Converts a list of paths, from a V1 torrent, into a file tree. + + Each file will have the dictionary structure of: + { file_name: {type, path, index, length, download} } + where: + type (str): will always be "file" + path (str): the absolute file path from the root the torrent + index (int): the index of file in the torrent + length (int): the size of the file, in bytes + download (bool): marks the file to download + + Folder will be dictionaries of files: + { dir1: type, contents: {file_name1: {...}, file_name2: {...}}, dir2: ... } + where: + type (str): will always be "dir" + contents (dict): a dictionary of inner files and folders + + The entire tree will start with a root dictionary: + { contents: {dirs...}, type: "dir" } - :param paths: The paths to be converted - :type paths: list + Args: + paths (list): The paths to be converted. """ - def __init__(self, paths): + def __init__(self, paths: list): self.tree = {'contents': {}, 'type': 'dir'} def get_parent(path): @@ -466,13 +543,23 @@ class FileTree2: class FileTree: """ - Convert a list of paths in a file tree. + Converts a dict of paths, from a V1 torrent, into a file tree. + + Each file will have the dictionary structure of: + { file_name: [index, length, download] } + Where: + index (int): the index of file in the torrent + length (int): the size of the file, in bytes + download (bool): marks the file to download + + Folder will be dictionaries of files: + { dir1: {file_name1: [...], file_name2: [...]}, dir2: ... } - :param paths: The paths to be converted. - :type paths: list + Args: + paths (dict): The paths to be converted. """ - def __init__(self, paths): + def __init__(self, paths: dict): self.tree = {} def get_parent(path): @@ -498,8 +585,8 @@ class FileTree: """ Return the tree, after first converting all file lists to a tuple. - :returns: the file tree. - :rtype: dictionary + Returns: + dict: the file tree. """ def to_tuple(path, item): @@ -515,10 +602,10 @@ class FileTree: Walk through the file tree calling the callback function on each item contained. - :param callback: The function to be used as a callback, it should have - the signature func(item, path) where item is a `tuple` for a file - and `dict` for a directory. - :type callback: function + Args: + callback (function): The function to be used as a callback, it should have + the signature func(item, path) where item is a `tuple` for a file + and `dict` for a directory. """ def walk(directory, parent_path): @@ -547,3 +634,94 @@ class FileTree: self.walk(write) return '\n'.join(lines) + + +class FiletreeBTv2(FileTree): + """ + Converts a dict of paths, from a V2 torrent, into a file tree. + + Each file will have the dictionary structure of: + { file_name: [index, length, download] } + Where: + index (int): the index of file in the torrent + length (int): the size of the file, in bytes + download (bool): marks the file to download + + Folder will be dictionaries of files: + { dir1: {file_name1: [...], file_name2: [...]}, dir2: ... } + + Args: + file_tree (dict): The paths to be converted. + """ + + def __init__(self, file_tree): + self.tree = {} + + def get_parent(curr_tree_dict, index, parent) -> int: + for key, item in curr_tree_dict.items(): + key = decode_bytes(key) + if b'' in item: + parent[key] = [index, item[b''][b'length']] + index += 1 + else: + parent[key] = {} + index = get_parent(item, index, parent[key]) + return index + + get_parent(file_tree, 0, self.tree) + + +class FileTree2BTv2(FileTree2): + """ + Converts a dict of paths, from a V2 torrent, into a file tree. + + Each file will have the dictionary structure of: + { file_name: {type, path, index, length, download} } + where: + type (str): will always be "file" + path (str): the absolute file path from the root the torrent + index (int): the index of file in the torrent + length (int): the size of the file, in bytes + download (bool): marks the file to download + + Folder will be dictionaries of files: + { dir1: type, contents: {file_name1: {...}, file_name2: {...}}, dir2: ... } + where: + type (str): will always be "dir" + contents (dict): a dictionary of inner files and folders + + The entire tree will start with a root dictionary: + { contents: {dirs...}, type: "dir" } + + Args: + file_tree (dict): The paths to be converted. + """ + + def __init__(self, file_tree): + self.tree = {'contents': {}, 'type': 'dir'} + + def get_parent(curr_tree_dict, index, parent) -> Tuple[int, int]: + total_length = 0 + for key, item in curr_tree_dict.items(): + key = decode_bytes(key) + if b'' in item: + length = item[b''][b'length'] + total_length += length + parent['contents'][key] = { + 'index': index, + 'length': length, + 'type': 'file', + } + index += 1 + else: + parent['contents'][key] = { + 'contents': {}, + 'type': 'dir', + 'length': 0, + } + index, length = get_parent(item, index, parent['contents'][key]) + parent['contents'][key]['length'] = length + total_length += length + return index, total_length + + get_parent(file_tree, 0, self.tree) diff --git a/deluge/ui/console/__init__.py b/deluge/ui/console/__init__.py index 7da04a6de..a09d9366c 100644 --- a/deluge/ui/console/__init__.py +++ b/deluge/ui/console/__init__.py @@ -12,5 +12,13 @@ UI_PATH = __path__[0] def start(): + Console().start() + +def test_start(): + """Entry point for tests + + A workaround for unit tests which require a deferred object to be + returned to run properly due to mocking the Twisted reactor. + """ return Console().start() diff --git a/deluge/ui/console/cmdline/command.py b/deluge/ui/console/cmdline/command.py index 40edd78f0..63dc9265a 100644 --- a/deluge/ui/console/cmdline/command.py +++ b/deluge/ui/console/cmdline/command.py @@ -142,7 +142,6 @@ class Commander: class BaseCommand: - usage = None interactive_only = False aliases = [] diff --git a/deluge/ui/console/console.py b/deluge/ui/console/console.py index 8ef87e8de..f91563f43 100644 --- a/deluge/ui/console/console.py +++ b/deluge/ui/console/console.py @@ -61,7 +61,6 @@ class LogStream: class Console(UI): - cmd_description = """Console or command-line user interface""" def __init__(self, *args, **kwargs): diff --git a/deluge/ui/console/eventlog.py b/deluge/ui/console/eventlog.py new file mode 100644 index 000000000..c1ee6abe4 --- /dev/null +++ b/deluge/ui/console/eventlog.py @@ -0,0 +1,125 @@ +import time + +import deluge.component as component +from deluge.decorators import maybe_coroutine +from deluge.ui.client import client +from deluge.ui.console.utils import colors + + +class EventLog(component.Component): + """ + Prints out certain events as they are received from the core. + """ + + def __init__(self): + component.Component.__init__(self, 'EventLog') + self.console = component.get('ConsoleUI') + self.prefix = '{!event!}* [%H:%M:%S] ' + self.date_change_format = 'On {!yellow!}%a, %d %b %Y{!input!} %Z:' + + event_callbacks = { + 'TorrentAddedEvent': self.on_torrent_added, + 'PreTorrentRemovedEvent': self.on_torrent_removed, + 'TorrentStateChangedEvent': self.on_torrent_state_changed, + 'TorrentFinishedEvent': self.on_torrent_finished, + 'NewVersionAvailableEvent': self.on_new_version_available, + 'SessionPausedEvent': self.on_session_paused, + 'SessionResumedEvent': self.on_session_resumed, + 'ConfigValueChangedEvent': self.on_config_value_changed, + 'PluginEnabledEvent': self.on_plugin_enabled, + 'PluginDisabledEvent': self.on_plugin_disabled, + } + + for event, callback in event_callbacks.items(): + client.register_event_handler(event, callback) + + self.previous_time = time.localtime(0) + + @maybe_coroutine + async def on_torrent_added(self, torrent_id, from_state): + if from_state: + return + + status = await client.core.get_torrent_status(torrent_id, ['name', 'state']) + self.write( + '{!green!}Torrent Added: {!info!}%s ({!cyan!}%s{!info!})' + % (status['name'], torrent_id) + ) + # Write out what state the added torrent took + self.on_torrent_state_changed(torrent_id, status['state']) + + def on_torrent_removed(self, torrent_id): + self.write( + '{!red!}Torrent Removed: {!info!}%s ({!cyan!}%s{!info!})' + % (self.console.get_torrent_name(torrent_id), torrent_id) + ) + + def on_torrent_state_changed(self, torrent_id, state): + # It's probably a new torrent, ignore it + if not state: + return + # Modify the state string color + if state in colors.state_color: + state = colors.state_color[state] + state + + t_name = self.console.get_torrent_name(torrent_id) + + # Again, it's most likely a new torrent + if not t_name: + return + + self.write(f'{state}: {{!info!}}{t_name} ({{!cyan!}}{torrent_id}{{!info!}})') + + def on_torrent_finished(self, torrent_id): + if component.get('TorrentList').config['ring_bell']: + import curses.beep + + curses.beep() + self.write( + '{!info!}Torrent Finished: %s ({!cyan!}%s{!info!})' + % (self.console.get_torrent_name(torrent_id), torrent_id) + ) + + def on_new_version_available(self, version): + self.write('{!input!}New Deluge version available: {!info!}%s' % (version)) + + def on_session_paused(self): + self.write('{!input!}Session Paused') + + def on_session_resumed(self): + self.write('{!green!}Session Resumed') + + def on_config_value_changed(self, key, value): + color = '{!white,black,bold!}' + try: + color = colors.type_color[type(value)] + except KeyError: + pass + + self.write(f'ConfigValueChanged: {{!input!}}{key}: {color}{value}') + + def write(self, s): + current_time = time.localtime() + + date_different = False + for field in ['tm_mday', 'tm_mon', 'tm_year']: + c = getattr(current_time, field) + p = getattr(self.previous_time, field) + if c != p: + date_different = True + + if date_different: + string = time.strftime(self.date_change_format) + self.console.write_event(' ') + self.console.write_event(string) + + p = time.strftime(self.prefix) + + self.console.write_event(p + s) + self.previous_time = current_time + + def on_plugin_enabled(self, name): + self.write('PluginEnabled: {!info!}%s' % name) + + def on_plugin_disabled(self, name): + self.write('PluginDisabled: {!info!}%s' % name) diff --git a/deluge/ui/console/main.py b/deluge/ui/console/main.py index 31d1db177..106169f0e 100644 --- a/deluge/ui/console/main.py +++ b/deluge/ui/console/main.py @@ -11,16 +11,15 @@ import locale import logging import os import sys -import time from twisted.internet import defer, error, reactor import deluge.common import deluge.component as component from deluge.configmanager import ConfigManager -from deluge.decorators import overrides -from deluge.error import DelugeError +from deluge.decorators import maybe_coroutine, overrides from deluge.ui.client import client +from deluge.ui.console.eventlog import EventLog from deluge.ui.console.modes.addtorrents import AddTorrents from deluge.ui.console.modes.basemode import TermResizeHandler from deluge.ui.console.modes.cmdline import CmdLine @@ -29,6 +28,7 @@ from deluge.ui.console.modes.preferences import Preferences from deluge.ui.console.modes.torrentdetail import TorrentDetail from deluge.ui.console.modes.torrentlist.torrentlist import TorrentList from deluge.ui.console.utils import colors +from deluge.ui.console.utils.config import migrate_1_to_2 from deluge.ui.console.widgets import StatusBars from deluge.ui.coreconfig import CoreConfig from deluge.ui.sessionproxy import SessionProxy @@ -160,82 +160,54 @@ deluge-console.exe "add -p c:\\mytorrents c:\\new.torrent" wrapper(self.run) - def quit(self): + @maybe_coroutine + async def quit(self): if client.connected(): + await client.disconnect() - def on_disconnect(result): - reactor.stop() - - return client.disconnect().addCallback(on_disconnect) - else: - try: - reactor.stop() - except error.ReactorNotRunning: - pass + try: + reactor.stop() + except error.ReactorNotRunning: + pass - def exec_args(self, options): + @maybe_coroutine + async def exec_args(self, options): """Execute console commands from command line.""" from deluge.ui.console.cmdline.command import Commander commander = Commander(self._commands) - - def on_connect(result): - def on_components_started(result): - def on_started(result): - def do_command(result, cmd): - return commander.do_command(cmd) - - def exec_command(result, cmd): - return commander.exec_command(cmd) - - d = defer.succeed(None) - for command in options.parsed_cmds: - if command.command in ('quit', 'exit'): - break - d.addCallback(exec_command, command) - d.addCallback(do_command, 'quit') - return d - - # We need to wait for the rpcs in start() to finish before processing - # any of the commands. - self.started_deferred.addCallback(on_started) - return self.started_deferred - - d = self.start_console() - d.addCallback(on_components_started) - return d - - def on_connect_fail(reason): - if reason.check(DelugeError): - rm = reason.getErrorMessage() + try: + if not self.interactive and options.parsed_cmds[0].command == 'connect': + await commander.exec_command(options.parsed_cmds.pop(0)) else: - rm = reason.value.message + daemon_options = ( + options.daemon_addr, + options.daemon_port, + options.daemon_user, + options.daemon_pass, + ) + log.info( + 'Connect: host=%s, port=%s, username=%s', + *daemon_options[0:3], + ) + await client.connect(*daemon_options) + except Exception as reason: print( 'Could not connect to daemon: %s:%s\n %s' - % (options.daemon_addr, options.daemon_port, rm) + % (options.daemon_addr, options.daemon_port, reason) ) commander.do_command('quit') - d = None - if not self.interactive and options.parsed_cmds[0].command == 'connect': - d = commander.exec_command(options.parsed_cmds.pop(0)) - else: - log.info( - 'connect: host=%s, port=%s, username=%s, password=%s', - options.daemon_addr, - options.daemon_port, - options.daemon_user, - options.daemon_pass, - ) - d = client.connect( - options.daemon_addr, - options.daemon_port, - options.daemon_user, - options.daemon_pass, - ) - d.addCallback(on_connect) - d.addErrback(on_connect_fail) - return d + await self.start_console() + # Wait for RPCs in start() to finish before processing commands. + await self.started_deferred + + for cmd in options.parsed_cmds: + if cmd.command in ('quit', 'exit'): + break + await commander.exec_command(cmd) + + commander.do_command('quit') def run(self, stdscr): """This method is called by the curses.wrapper to start the mainloop and screen. @@ -251,7 +223,7 @@ deluge-console.exe "add -p c:\\mytorrents c:\\new.torrent" self.config = ConfigManager( 'console.conf', defaults=DEFAULT_CONSOLE_PREFS, file_version=2 ) - self.config.run_converter((0, 1), 2, self._migrate_config_1_to_2) + self.config.run_converter((0, 1), 2, migrate_1_to_2) self.statusbars = StatusBars() from deluge.ui.console.modes.connectionmanager import ConnectionManager @@ -282,8 +254,8 @@ deluge-console.exe "add -p c:\\mytorrents c:\\new.torrent" reactor.run() @overrides(TermResizeHandler) - def on_terminal_size(self, *args): - rows, cols = super().on_terminal_size(args) + def on_resize(self, *args): + rows, cols = super().on_resize(*args) for mode in self.modes: self.modes[mode].on_resize(rows, cols) @@ -353,78 +325,64 @@ deluge-console.exe "add -p c:\\mytorrents c:\\new.torrent" def is_active_mode(self, mode): return mode == self.active_mode - def start_components(self): - def on_started(result): - component.pause( - [ - 'TorrentList', - 'EventView', - 'AddTorrents', - 'TorrentDetail', - 'Preferences', - ] - ) - - if self.interactive: - d = component.start().addCallback(on_started) - else: - d = component.start(['SessionProxy', 'ConsoleUI', 'CoreConfig']) - return d + @maybe_coroutine + async def start_components(self): + if not self.interactive: + return await component.start(['SessionProxy', 'ConsoleUI', 'CoreConfig']) + + await component.start() + component.pause( + [ + 'TorrentList', + 'EventView', + 'AddTorrents', + 'TorrentDetail', + 'Preferences', + ] + ) - def start_console(self): - # Maintain a list of (torrent_id, name) for use in tab completion + @maybe_coroutine + async def start_console(self): self.started_deferred = defer.Deferred() - if not self.initialized: - self.initialized = True - d = self.start_components() + if self.initialized: + await component.stop(['SessionProxy']) + await component.start(['SessionProxy']) else: + self.initialized = True + await self.start_components() - def on_stopped(result): - return component.start(['SessionProxy']) - - d = component.stop(['SessionProxy']).addCallback(on_stopped) - return d - - def start(self): - def on_session_state(result): - self.torrents = [] - self.events = [] - - def on_torrents_status(torrents): - for torrent_id, status in torrents.items(): - self.torrents.append((torrent_id, status['name'])) - self.started_deferred.callback(True) + @maybe_coroutine + async def start(self): + result = await client.core.get_session_state() + # Maintain a list of (torrent_id, name) for use in tab completion + self.torrents = [] + self.events = [] - client.core.get_torrents_status({'id': result}, ['name']).addCallback( - on_torrents_status - ) + torrents = await client.core.get_torrents_status({'id': result}, ['name']) + for torrent_id, status in torrents.items(): + self.torrents.append((torrent_id, status['name'])) - d = client.core.get_session_state().addCallback(on_session_state) + self.started_deferred.callback(True) # Register event handlers to keep the torrent list up-to-date - client.register_event_handler('TorrentAddedEvent', self.on_torrent_added_event) - client.register_event_handler( - 'TorrentRemovedEvent', self.on_torrent_removed_event - ) - return d - - def on_torrent_added_event(self, event, from_state=False): - def on_torrent_status(status): - self.torrents.append((event, status['name'])) + client.register_event_handler('TorrentAddedEvent', self.on_torrent_added) + client.register_event_handler('TorrentRemovedEvent', self.on_torrent_removed) - client.core.get_torrent_status(event, ['name']).addCallback(on_torrent_status) + @defer.inlineCallbacks + def on_torrent_added(self, event, from_state=False): + status = yield client.core.get_torrent_status(event, ['name']) + self.torrents.append((event, status['name'])) - def on_torrent_removed_event(self, event): + def on_torrent_removed(self, event): for index, (tid, name) in enumerate(self.torrents): if event == tid: del self.torrents[index] def match_torrents(self, strings): - torrent_ids = [] - for s in strings: - torrent_ids.extend(self.match_torrent(s)) - return list(set(torrent_ids)) + return list( + {torrent for string in strings for torrent in self.match_torrent(string)} + ) def match_torrent(self, string): """ @@ -510,256 +468,3 @@ deluge-console.exe "add -p c:\\mytorrents c:\\new.torrent" self.events.append(s) else: print(colors.strip_colors(s)) - - def _migrate_config_1_to_2(self, config): - """Create better structure by moving most settings out of dict root - and into sub categories. Some keys are also renamed to be consistent - with other UIs. - """ - - def move_key(source, dest, source_key, dest_key=None): - if dest_key is None: - dest_key = source_key - dest[dest_key] = source[source_key] - del source[source_key] - - # These are moved to 'torrentview' sub dict - for k in [ - 'sort_primary', - 'sort_secondary', - 'move_selection', - 'separate_complete', - ]: - move_key(config, config['torrentview'], k) - - # These are moved to 'addtorrents' sub dict - for k in [ - 'show_misc_files', - 'show_hidden_folders', - 'sort_column', - 'reverse_sort', - 'last_path', - ]: - move_key(config, config['addtorrents'], 'addtorrents_%s' % k, dest_key=k) - - # These are moved to 'cmdline' sub dict - for k in [ - 'ignore_duplicate_lines', - 'torrents_per_tab_press', - 'third_tab_lists_all', - ]: - move_key(config, config['cmdline'], k) - - move_key( - config, - config['cmdline'], - 'save_legacy_history', - dest_key='save_command_history', - ) - - # Add key for localization - config['language'] = DEFAULT_CONSOLE_PREFS['language'] - - # Migrate column settings - columns = [ - 'queue', - 'size', - 'state', - 'progress', - 'seeds', - 'peers', - 'downspeed', - 'upspeed', - 'eta', - 'ratio', - 'avail', - 'added', - 'tracker', - 'savepath', - 'downloaded', - 'uploaded', - 'remaining', - 'owner', - 'downloading_time', - 'seeding_time', - 'completed', - 'seeds_peers_ratio', - 'complete_seen', - 'down_limit', - 'up_limit', - 'shared', - 'name', - ] - column_name_mapping = { - 'downspeed': 'download_speed', - 'upspeed': 'upload_speed', - 'added': 'time_added', - 'savepath': 'download_location', - 'completed': 'completed_time', - 'complete_seen': 'last_seen_complete', - 'down_limit': 'max_download_speed', - 'up_limit': 'max_upload_speed', - 'downloading_time': 'active_time', - } - - from deluge.ui.console.modes.torrentlist.torrentview import default_columns - - # These are moved to 'torrentview.columns' sub dict - for k in columns: - column_name = column_name_mapping.get(k, k) - config['torrentview']['columns'][column_name] = {} - if k == 'name': - config['torrentview']['columns'][column_name]['visible'] = True - else: - move_key( - config, - config['torrentview']['columns'][column_name], - 'show_%s' % k, - dest_key='visible', - ) - move_key( - config, - config['torrentview']['columns'][column_name], - '%s_width' % k, - dest_key='width', - ) - config['torrentview']['columns'][column_name]['order'] = default_columns[ - column_name - ]['order'] - - return config - - -class EventLog(component.Component): - """ - Prints out certain events as they are received from the core. - """ - - def __init__(self): - component.Component.__init__(self, 'EventLog') - self.console = component.get('ConsoleUI') - self.prefix = '{!event!}* [%H:%M:%S] ' - self.date_change_format = 'On {!yellow!}%a, %d %b %Y{!input!} %Z:' - - client.register_event_handler('TorrentAddedEvent', self.on_torrent_added_event) - client.register_event_handler( - 'PreTorrentRemovedEvent', self.on_torrent_removed_event - ) - client.register_event_handler( - 'TorrentStateChangedEvent', self.on_torrent_state_changed_event - ) - client.register_event_handler( - 'TorrentFinishedEvent', self.on_torrent_finished_event - ) - client.register_event_handler( - 'NewVersionAvailableEvent', self.on_new_version_available_event - ) - client.register_event_handler( - 'SessionPausedEvent', self.on_session_paused_event - ) - client.register_event_handler( - 'SessionResumedEvent', self.on_session_resumed_event - ) - client.register_event_handler( - 'ConfigValueChangedEvent', self.on_config_value_changed_event - ) - client.register_event_handler( - 'PluginEnabledEvent', self.on_plugin_enabled_event - ) - client.register_event_handler( - 'PluginDisabledEvent', self.on_plugin_disabled_event - ) - - self.previous_time = time.localtime(0) - - def on_torrent_added_event(self, torrent_id, from_state): - if from_state: - return - - def on_torrent_status(status): - self.write( - '{!green!}Torrent Added: {!info!}%s ({!cyan!}%s{!info!})' - % (status['name'], torrent_id) - ) - # Write out what state the added torrent took - self.on_torrent_state_changed_event(torrent_id, status['state']) - - client.core.get_torrent_status(torrent_id, ['name', 'state']).addCallback( - on_torrent_status - ) - - def on_torrent_removed_event(self, torrent_id): - self.write( - '{!red!}Torrent Removed: {!info!}%s ({!cyan!}%s{!info!})' - % (self.console.get_torrent_name(torrent_id), torrent_id) - ) - - def on_torrent_state_changed_event(self, torrent_id, state): - # It's probably a new torrent, ignore it - if not state: - return - # Modify the state string color - if state in colors.state_color: - state = colors.state_color[state] + state - - t_name = self.console.get_torrent_name(torrent_id) - - # Again, it's most likely a new torrent - if not t_name: - return - - self.write(f'{state}: {{!info!}}{t_name} ({{!cyan!}}{torrent_id}{{!info!}})') - - def on_torrent_finished_event(self, torrent_id): - if component.get('TorrentList').config['ring_bell']: - import curses.beep - - curses.beep() - self.write( - '{!info!}Torrent Finished: %s ({!cyan!}%s{!info!})' - % (self.console.get_torrent_name(torrent_id), torrent_id) - ) - - def on_new_version_available_event(self, version): - self.write('{!input!}New Deluge version available: {!info!}%s' % (version)) - - def on_session_paused_event(self): - self.write('{!input!}Session Paused') - - def on_session_resumed_event(self): - self.write('{!green!}Session Resumed') - - def on_config_value_changed_event(self, key, value): - color = '{!white,black,bold!}' - try: - color = colors.type_color[type(value)] - except KeyError: - pass - - self.write(f'ConfigValueChanged: {{!input!}}{key}: {color}{value}') - - def write(self, s): - current_time = time.localtime() - - date_different = False - for field in ['tm_mday', 'tm_mon', 'tm_year']: - c = getattr(current_time, field) - p = getattr(self.previous_time, field) - if c != p: - date_different = True - - if date_different: - string = time.strftime(self.date_change_format) - self.console.write_event(' ') - self.console.write_event(string) - - p = time.strftime(self.prefix) - - self.console.write_event(p + s) - self.previous_time = current_time - - def on_plugin_enabled_event(self, name): - self.write('PluginEnabled: {!info!}%s' % name) - - def on_plugin_disabled_event(self, name): - self.write('PluginDisabled: {!info!}%s' % name) diff --git a/deluge/ui/console/modes/basemode.py b/deluge/ui/console/modes/basemode.py index 5ebaf86fe..a8ab1dbd9 100644 --- a/deluge/ui/console/modes/basemode.py +++ b/deluge/ui/console/modes/basemode.py @@ -8,7 +8,10 @@ # import logging +import signal +import struct import sys +from typing import Tuple import deluge.component as component import deluge.ui.console.utils.colors as colors @@ -22,10 +25,8 @@ except ImportError: pass try: - import signal - import struct - import termios from fcntl import ioctl + from termios import TIOCGWINSZ except ImportError: pass @@ -62,17 +63,20 @@ class InputKeyHandler: class TermResizeHandler: def __init__(self): try: - signal.signal(signal.SIGWINCH, self.on_terminal_size) + signal.signal(signal.SIGWINCH, self.on_resize) except ValueError as ex: log.debug('TermResize unavailable, unable to catch SIGWINCH signal: %s', ex) except AttributeError as ex: log.debug('TermResize unavailable, no SIGWINCH signal on Windows: %s', ex) - def on_terminal_size(self, *args): - # Get the new rows and cols value - rows, cols = struct.unpack('hhhh', ioctl(0, termios.TIOCGWINSZ, b'\000' * 8))[ - 0:2 - ] + @staticmethod + def get_window_size(fd: int = 0) -> Tuple[int, int]: + """Return the tty window size as row, col.""" + return struct.unpack('4h', ioctl(fd, TIOCGWINSZ, b'\x00' * 8))[0:2] + + def on_resize(self, _signum, _frame): + """Handler for SIGWINCH when terminal changes size""" + rows, cols = self.get_window_size() curses.resizeterm(rows, cols) return rows, cols diff --git a/deluge/ui/console/modes/connectionmanager.py b/deluge/ui/console/modes/connectionmanager.py index 0ccdd93db..ce8b6f554 100644 --- a/deluge/ui/console/modes/connectionmanager.py +++ b/deluge/ui/console/modes/connectionmanager.py @@ -127,12 +127,14 @@ class ConnectionManager(BaseMode, PopupsHandler): def add_host(self, hostname, port, username, password): log.info('Adding host: %s', hostname) + if port.isdecimal(): + port = int(port) try: self.hostlist.add_host(hostname, port, username, password) except ValueError as ex: self.report_message(_('Error adding host'), f'{hostname}: {ex}') else: - self.update_select_host_popup() + self.pop_popup() def delete_host(self, host_id): log.info('Deleting host: %s', host_id) @@ -195,7 +197,8 @@ class ConnectionManager(BaseMode, PopupsHandler): if chr(c) == 'q': return elif chr(c) == 'D': - host_id = self.popup.current_selection()[1] + host_index = self.popup.current_selection() + host_id = self.popup.inputs[host_index].name self.delete_host(host_id) return elif chr(c) == 'a': diff --git a/deluge/ui/console/modes/torrentdetail.py b/deluge/ui/console/modes/torrentdetail.py index 16bd08a5c..4383d58a6 100644 --- a/deluge/ui/console/modes/torrentdetail.py +++ b/deluge/ui/console/modes/torrentdetail.py @@ -181,7 +181,6 @@ class TorrentDetail(BaseMode, PopupsHandler): self.refresh() def set_state(self, state): - if state.get('files'): self.full_names = {x['index']: x['path'] for x in state['files']} @@ -363,7 +362,6 @@ class TorrentDetail(BaseMode, PopupsHandler): ).addCallback(self.set_state) def draw_files(self, files, depth, off, idx): - color_selected = 'blue' color_partially_selected = 'magenta' color_highlighted = 'white' diff --git a/deluge/ui/console/modes/torrentlist/torrentactions.py b/deluge/ui/console/modes/torrentlist/torrentactions.py index 6450118c6..a153e1154 100644 --- a/deluge/ui/console/modes/torrentlist/torrentactions.py +++ b/deluge/ui/console/modes/torrentlist/torrentactions.py @@ -240,7 +240,6 @@ def torrent_action(action, *args, **kwargs): # Creates the popup. mode is the calling mode, tids is a list of torrents to take action upon def torrent_actions_popup(mode, torrent_ids, details=False, action=None, close_cb=None): - if action is not None: torrent_action(action, mode=mode, torrent_ids=torrent_ids) return diff --git a/deluge/ui/console/utils/config.py b/deluge/ui/console/utils/config.py new file mode 100644 index 000000000..debb52a50 --- /dev/null +++ b/deluge/ui/console/utils/config.py @@ -0,0 +1,118 @@ +def migrate_1_to_2(config): + """Create better structure by moving most settings out of dict root + and into sub categories. Some keys are also renamed to be consistent + with other UIs. + """ + + def move_key(source, dest, source_key, dest_key=None): + if dest_key is None: + dest_key = source_key + + dest[dest_key] = source[source_key] + del source[source_key] + + # These are moved to 'torrentview' sub dict + for k in [ + 'sort_primary', + 'sort_secondary', + 'move_selection', + 'separate_complete', + ]: + move_key(config, config['torrentview'], k) + + # These are moved to 'addtorrents' sub dict + for k in [ + 'show_misc_files', + 'show_hidden_folders', + 'sort_column', + 'reverse_sort', + 'last_path', + ]: + move_key(config, config['addtorrents'], 'addtorrents_%s' % k, dest_key=k) + + # These are moved to 'cmdline' sub dict + for k in [ + 'ignore_duplicate_lines', + 'torrents_per_tab_press', + 'third_tab_lists_all', + ]: + move_key(config, config['cmdline'], k) + + move_key( + config, + config['cmdline'], + 'save_legacy_history', + dest_key='save_command_history', + ) + + # Add key for localization + config['language'] = '' + + # Migrate column settings + columns = [ + 'queue', + 'size', + 'state', + 'progress', + 'seeds', + 'peers', + 'downspeed', + 'upspeed', + 'eta', + 'ratio', + 'avail', + 'added', + 'tracker', + 'savepath', + 'downloaded', + 'uploaded', + 'remaining', + 'owner', + 'downloading_time', + 'seeding_time', + 'completed', + 'seeds_peers_ratio', + 'complete_seen', + 'down_limit', + 'up_limit', + 'shared', + 'name', + ] + column_name_mapping = { + 'downspeed': 'download_speed', + 'upspeed': 'upload_speed', + 'added': 'time_added', + 'savepath': 'download_location', + 'completed': 'completed_time', + 'complete_seen': 'last_seen_complete', + 'down_limit': 'max_download_speed', + 'up_limit': 'max_upload_speed', + 'downloading_time': 'active_time', + } + + from deluge.ui.console.modes.torrentlist.torrentview import default_columns + + # These are moved to 'torrentview.columns' sub dict + for k in columns: + column_name = column_name_mapping.get(k, k) + config['torrentview']['columns'][column_name] = {} + if k == 'name': + config['torrentview']['columns'][column_name]['visible'] = True + else: + move_key( + config, + config['torrentview']['columns'][column_name], + 'show_%s' % k, + dest_key='visible', + ) + move_key( + config, + config['torrentview']['columns'][column_name], + '%s_width' % k, + dest_key='width', + ) + config['torrentview']['columns'][column_name]['order'] = default_columns[ + column_name + ]['order'] + + return config diff --git a/deluge/ui/console/widgets/popup.py b/deluge/ui/console/widgets/popup.py index 4b0d0274e..07d667d27 100644 --- a/deluge/ui/console/widgets/popup.py +++ b/deluge/ui/console/widgets/popup.py @@ -130,7 +130,6 @@ class Popup(BaseWindow, InputKeyHandler): BaseWindow.refresh(self) def calculate_size(self): - if isinstance(self.height_req, float) and 0.0 < self.height_req <= 1.0: height = int((self.parent.rows - 2) * self.height_req) else: @@ -252,7 +251,7 @@ class SelectablePopup(BaseInputPane, Popup): def set_selection(self, index): """Set a selected index""" - self.active_input = index + self.active_input = min(index, len(self.inputs) - 1) def add_line( self, diff --git a/deluge/ui/data/icons/hicolor/128x128/apps/deluge.png b/deluge/ui/data/icons/hicolor/128x128/apps/deluge.png Binary files differindex 48fcc473e..32aa26ae2 100644 --- a/deluge/ui/data/icons/hicolor/128x128/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/128x128/apps/deluge.png diff --git a/deluge/ui/data/icons/hicolor/16x16/apps/deluge-panel.png b/deluge/ui/data/icons/hicolor/16x16/apps/deluge-panel.png Binary files differindex 2f4ae4c70..1291dfaeb 100644 --- a/deluge/ui/data/icons/hicolor/16x16/apps/deluge-panel.png +++ b/deluge/ui/data/icons/hicolor/16x16/apps/deluge-panel.png diff --git a/deluge/ui/data/icons/hicolor/16x16/apps/deluge.png b/deluge/ui/data/icons/hicolor/16x16/apps/deluge.png Binary files differindex 2f4ae4c70..1291dfaeb 100644 --- a/deluge/ui/data/icons/hicolor/16x16/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/16x16/apps/deluge.png diff --git a/deluge/ui/data/icons/hicolor/192x192/apps/deluge.png b/deluge/ui/data/icons/hicolor/192x192/apps/deluge.png Binary files differindex 5d54ea41e..93c6feb44 100644 --- a/deluge/ui/data/icons/hicolor/192x192/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/192x192/apps/deluge.png diff --git a/deluge/ui/data/icons/hicolor/22x22/apps/deluge-panel.png b/deluge/ui/data/icons/hicolor/22x22/apps/deluge-panel.png Binary files differindex 13fe852ad..95b13e359 100644 --- a/deluge/ui/data/icons/hicolor/22x22/apps/deluge-panel.png +++ b/deluge/ui/data/icons/hicolor/22x22/apps/deluge-panel.png diff --git a/deluge/ui/data/icons/hicolor/22x22/apps/deluge.png b/deluge/ui/data/icons/hicolor/22x22/apps/deluge.png Binary files differindex 13fe852ad..95b13e359 100644 --- a/deluge/ui/data/icons/hicolor/22x22/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/22x22/apps/deluge.png diff --git a/deluge/ui/data/icons/hicolor/24x24/apps/deluge-panel.png b/deluge/ui/data/icons/hicolor/24x24/apps/deluge-panel.png Binary files differindex 3a345eb44..96ab75325 100644 --- a/deluge/ui/data/icons/hicolor/24x24/apps/deluge-panel.png +++ b/deluge/ui/data/icons/hicolor/24x24/apps/deluge-panel.png diff --git a/deluge/ui/data/icons/hicolor/24x24/apps/deluge.png b/deluge/ui/data/icons/hicolor/24x24/apps/deluge.png Binary files differindex 3a345eb44..96ab75325 100644 --- a/deluge/ui/data/icons/hicolor/24x24/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/24x24/apps/deluge.png diff --git a/deluge/ui/data/icons/hicolor/256x256/apps/deluge.png b/deluge/ui/data/icons/hicolor/256x256/apps/deluge.png Binary files differindex ee5d2909b..4ba3bb997 100644 --- a/deluge/ui/data/icons/hicolor/256x256/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/256x256/apps/deluge.png diff --git a/deluge/ui/data/icons/hicolor/32x32/apps/deluge.png b/deluge/ui/data/icons/hicolor/32x32/apps/deluge.png Binary files differindex 6787fa39a..916f13632 100644 --- a/deluge/ui/data/icons/hicolor/32x32/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/32x32/apps/deluge.png diff --git a/deluge/ui/data/icons/hicolor/36x36/apps/deluge.png b/deluge/ui/data/icons/hicolor/36x36/apps/deluge.png Binary files differindex 4050041f5..92d35fa0f 100644 --- a/deluge/ui/data/icons/hicolor/36x36/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/36x36/apps/deluge.png diff --git a/deluge/ui/data/icons/hicolor/48x48/apps/deluge.png b/deluge/ui/data/icons/hicolor/48x48/apps/deluge.png Binary files differindex 7b067ac94..95592bb49 100644 --- a/deluge/ui/data/icons/hicolor/48x48/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/48x48/apps/deluge.png diff --git a/deluge/ui/data/icons/hicolor/512x512/apps/deluge.png b/deluge/ui/data/icons/hicolor/512x512/apps/deluge.png Binary files differindex 70cd91af5..464dd69f5 100644 --- a/deluge/ui/data/icons/hicolor/512x512/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/512x512/apps/deluge.png diff --git a/deluge/ui/data/icons/hicolor/64x64/apps/deluge.png b/deluge/ui/data/icons/hicolor/64x64/apps/deluge.png Binary files differindex 427556373..fb87321a5 100644 --- a/deluge/ui/data/icons/hicolor/64x64/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/64x64/apps/deluge.png diff --git a/deluge/ui/data/icons/hicolor/72x72/apps/deluge.png b/deluge/ui/data/icons/hicolor/72x72/apps/deluge.png Binary files differindex 7ba0efb1c..f313ed32c 100644 --- a/deluge/ui/data/icons/hicolor/72x72/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/72x72/apps/deluge.png diff --git a/deluge/ui/data/icons/hicolor/96x96/apps/deluge.png b/deluge/ui/data/icons/hicolor/96x96/apps/deluge.png Binary files differindex 2c64ec8b9..9b8d3abfe 100644 --- a/deluge/ui/data/icons/hicolor/96x96/apps/deluge.png +++ b/deluge/ui/data/icons/hicolor/96x96/apps/deluge.png diff --git a/deluge/ui/data/pixmaps/active16.png b/deluge/ui/data/pixmaps/active16.png Binary files differindex c9af82a5f..e5bab66cd 100644 --- a/deluge/ui/data/pixmaps/active16.png +++ b/deluge/ui/data/pixmaps/active16.png diff --git a/deluge/ui/data/pixmaps/alert16.png b/deluge/ui/data/pixmaps/alert16.png Binary files differindex 703663813..49028db9c 100644 --- a/deluge/ui/data/pixmaps/alert16.png +++ b/deluge/ui/data/pixmaps/alert16.png diff --git a/deluge/ui/data/pixmaps/all16.png b/deluge/ui/data/pixmaps/all16.png Binary files differindex c63f8df1a..1a9ba9092 100644 --- a/deluge/ui/data/pixmaps/all16.png +++ b/deluge/ui/data/pixmaps/all16.png diff --git a/deluge/ui/data/pixmaps/checking16.png b/deluge/ui/data/pixmaps/checking16.png Binary files differindex 6758e36e8..9961675c4 100644 --- a/deluge/ui/data/pixmaps/checking16.png +++ b/deluge/ui/data/pixmaps/checking16.png diff --git a/deluge/ui/data/pixmaps/deluge-about.png b/deluge/ui/data/pixmaps/deluge-about.png Binary files differindex 39322eb71..0b4ff4e6b 100644 --- a/deluge/ui/data/pixmaps/deluge-about.png +++ b/deluge/ui/data/pixmaps/deluge-about.png diff --git a/deluge/ui/data/pixmaps/deluge.ico b/deluge/ui/data/pixmaps/deluge.ico Binary files differindex d946d1114..854f867a5 100644 --- a/deluge/ui/data/pixmaps/deluge.ico +++ b/deluge/ui/data/pixmaps/deluge.ico diff --git a/deluge/ui/data/pixmaps/deluge.png b/deluge/ui/data/pixmaps/deluge.png Binary files differindex 7b067ac94..95592bb49 100644 --- a/deluge/ui/data/pixmaps/deluge.png +++ b/deluge/ui/data/pixmaps/deluge.png diff --git a/deluge/ui/data/pixmaps/deluge16.png b/deluge/ui/data/pixmaps/deluge16.png Binary files differindex 5afdbe4c6..1291dfaeb 100644 --- a/deluge/ui/data/pixmaps/deluge16.png +++ b/deluge/ui/data/pixmaps/deluge16.png diff --git a/deluge/ui/data/pixmaps/dht16.png b/deluge/ui/data/pixmaps/dht16.png Binary files differindex 363ee0c0f..2396bb132 100644 --- a/deluge/ui/data/pixmaps/dht16.png +++ b/deluge/ui/data/pixmaps/dht16.png diff --git a/deluge/ui/data/pixmaps/downloading16.png b/deluge/ui/data/pixmaps/downloading16.png Binary files differindex 24d6ffa38..e64aa5adc 100644 --- a/deluge/ui/data/pixmaps/downloading16.png +++ b/deluge/ui/data/pixmaps/downloading16.png diff --git a/deluge/ui/data/pixmaps/flags/ad.png b/deluge/ui/data/pixmaps/flags/ad.png Binary files differindex 93656aa35..cc5ab1e13 100644 --- a/deluge/ui/data/pixmaps/flags/ad.png +++ b/deluge/ui/data/pixmaps/flags/ad.png diff --git a/deluge/ui/data/pixmaps/flags/ae.png b/deluge/ui/data/pixmaps/flags/ae.png Binary files differindex e3abee163..590256f8a 100644 --- a/deluge/ui/data/pixmaps/flags/ae.png +++ b/deluge/ui/data/pixmaps/flags/ae.png diff --git a/deluge/ui/data/pixmaps/flags/af.png b/deluge/ui/data/pixmaps/flags/af.png Binary files differindex 8506736ad..d8faed3c9 100644 --- a/deluge/ui/data/pixmaps/flags/af.png +++ b/deluge/ui/data/pixmaps/flags/af.png diff --git a/deluge/ui/data/pixmaps/flags/ag.png b/deluge/ui/data/pixmaps/flags/ag.png Binary files differindex ba1aff986..7c6d7dbab 100644 --- a/deluge/ui/data/pixmaps/flags/ag.png +++ b/deluge/ui/data/pixmaps/flags/ag.png diff --git a/deluge/ui/data/pixmaps/flags/al.png b/deluge/ui/data/pixmaps/flags/al.png Binary files differindex 9b56fcba0..71f9d0aae 100644 --- a/deluge/ui/data/pixmaps/flags/al.png +++ b/deluge/ui/data/pixmaps/flags/al.png diff --git a/deluge/ui/data/pixmaps/flags/am.png b/deluge/ui/data/pixmaps/flags/am.png Binary files differindex 83ac72eb3..8bc88a26e 100644 --- a/deluge/ui/data/pixmaps/flags/am.png +++ b/deluge/ui/data/pixmaps/flags/am.png diff --git a/deluge/ui/data/pixmaps/flags/an.png b/deluge/ui/data/pixmaps/flags/an.png Binary files differindex 09cfdb128..49220a4c9 100644 --- a/deluge/ui/data/pixmaps/flags/an.png +++ b/deluge/ui/data/pixmaps/flags/an.png diff --git a/deluge/ui/data/pixmaps/flags/ao.png b/deluge/ui/data/pixmaps/flags/ao.png Binary files differindex c2004d618..9f1dcb46a 100644 --- a/deluge/ui/data/pixmaps/flags/ao.png +++ b/deluge/ui/data/pixmaps/flags/ao.png diff --git a/deluge/ui/data/pixmaps/flags/aq.png b/deluge/ui/data/pixmaps/flags/aq.png Binary files differindex 76fe736cb..de9bc8f2c 100644 --- a/deluge/ui/data/pixmaps/flags/aq.png +++ b/deluge/ui/data/pixmaps/flags/aq.png diff --git a/deluge/ui/data/pixmaps/flags/ar.png b/deluge/ui/data/pixmaps/flags/ar.png Binary files differindex f16a290b7..e3a87c893 100644 --- a/deluge/ui/data/pixmaps/flags/ar.png +++ b/deluge/ui/data/pixmaps/flags/ar.png diff --git a/deluge/ui/data/pixmaps/flags/as.png b/deluge/ui/data/pixmaps/flags/as.png Binary files differindex e38ce4323..1d00ab05a 100644 --- a/deluge/ui/data/pixmaps/flags/as.png +++ b/deluge/ui/data/pixmaps/flags/as.png diff --git a/deluge/ui/data/pixmaps/flags/at.png b/deluge/ui/data/pixmaps/flags/at.png Binary files differindex 25c7e421f..475bd128e 100644 --- a/deluge/ui/data/pixmaps/flags/at.png +++ b/deluge/ui/data/pixmaps/flags/at.png diff --git a/deluge/ui/data/pixmaps/flags/au.png b/deluge/ui/data/pixmaps/flags/au.png Binary files differindex 0de18f0b2..0335dbfc8 100644 --- a/deluge/ui/data/pixmaps/flags/au.png +++ b/deluge/ui/data/pixmaps/flags/au.png diff --git a/deluge/ui/data/pixmaps/flags/aw.png b/deluge/ui/data/pixmaps/flags/aw.png Binary files differindex 788d7385c..fc58befc3 100644 --- a/deluge/ui/data/pixmaps/flags/aw.png +++ b/deluge/ui/data/pixmaps/flags/aw.png diff --git a/deluge/ui/data/pixmaps/flags/ax.png b/deluge/ui/data/pixmaps/flags/ax.png Binary files differindex 0060c3566..134b2ac51 100644 --- a/deluge/ui/data/pixmaps/flags/ax.png +++ b/deluge/ui/data/pixmaps/flags/ax.png diff --git a/deluge/ui/data/pixmaps/flags/az.png b/deluge/ui/data/pixmaps/flags/az.png Binary files differindex cb9c9a171..e225bd227 100644 --- a/deluge/ui/data/pixmaps/flags/az.png +++ b/deluge/ui/data/pixmaps/flags/az.png diff --git a/deluge/ui/data/pixmaps/flags/ba.png b/deluge/ui/data/pixmaps/flags/ba.png Binary files differindex 160c5e2ab..bc8732550 100644 --- a/deluge/ui/data/pixmaps/flags/ba.png +++ b/deluge/ui/data/pixmaps/flags/ba.png diff --git a/deluge/ui/data/pixmaps/flags/bd.png b/deluge/ui/data/pixmaps/flags/bd.png Binary files differindex 10266cd50..23fea0e64 100644 --- a/deluge/ui/data/pixmaps/flags/bd.png +++ b/deluge/ui/data/pixmaps/flags/bd.png diff --git a/deluge/ui/data/pixmaps/flags/bf.png b/deluge/ui/data/pixmaps/flags/bf.png Binary files differindex 452329a01..aa7238bce 100644 --- a/deluge/ui/data/pixmaps/flags/bf.png +++ b/deluge/ui/data/pixmaps/flags/bf.png diff --git a/deluge/ui/data/pixmaps/flags/bh.png b/deluge/ui/data/pixmaps/flags/bh.png Binary files differindex 1b876e211..812126b66 100644 --- a/deluge/ui/data/pixmaps/flags/bh.png +++ b/deluge/ui/data/pixmaps/flags/bh.png diff --git a/deluge/ui/data/pixmaps/flags/bi.png b/deluge/ui/data/pixmaps/flags/bi.png Binary files differindex f4d9adf92..21ead6b8d 100644 --- a/deluge/ui/data/pixmaps/flags/bi.png +++ b/deluge/ui/data/pixmaps/flags/bi.png diff --git a/deluge/ui/data/pixmaps/flags/bj.png b/deluge/ui/data/pixmaps/flags/bj.png Binary files differindex 5740ccc5d..6b9a53899 100644 --- a/deluge/ui/data/pixmaps/flags/bj.png +++ b/deluge/ui/data/pixmaps/flags/bj.png diff --git a/deluge/ui/data/pixmaps/flags/bm.png b/deluge/ui/data/pixmaps/flags/bm.png Binary files differindex 85411bff3..c1859d1d7 100644 --- a/deluge/ui/data/pixmaps/flags/bm.png +++ b/deluge/ui/data/pixmaps/flags/bm.png diff --git a/deluge/ui/data/pixmaps/flags/bn.png b/deluge/ui/data/pixmaps/flags/bn.png Binary files differindex a0c223f48..a18d496f0 100644 --- a/deluge/ui/data/pixmaps/flags/bn.png +++ b/deluge/ui/data/pixmaps/flags/bn.png diff --git a/deluge/ui/data/pixmaps/flags/bo.png b/deluge/ui/data/pixmaps/flags/bo.png Binary files differindex c2ef0f42f..1b25cd93f 100644 --- a/deluge/ui/data/pixmaps/flags/bo.png +++ b/deluge/ui/data/pixmaps/flags/bo.png diff --git a/deluge/ui/data/pixmaps/flags/bs.png b/deluge/ui/data/pixmaps/flags/bs.png Binary files differindex 959252d65..dec86f3ac 100644 --- a/deluge/ui/data/pixmaps/flags/bs.png +++ b/deluge/ui/data/pixmaps/flags/bs.png diff --git a/deluge/ui/data/pixmaps/flags/bt.png b/deluge/ui/data/pixmaps/flags/bt.png Binary files differindex 2e1969652..3942fc987 100644 --- a/deluge/ui/data/pixmaps/flags/bt.png +++ b/deluge/ui/data/pixmaps/flags/bt.png diff --git a/deluge/ui/data/pixmaps/flags/bv.png b/deluge/ui/data/pixmaps/flags/bv.png Binary files differindex ae9060caf..faaa529d1 100644 --- a/deluge/ui/data/pixmaps/flags/bv.png +++ b/deluge/ui/data/pixmaps/flags/bv.png diff --git a/deluge/ui/data/pixmaps/flags/bw.png b/deluge/ui/data/pixmaps/flags/bw.png Binary files differindex 2dee7fb3c..d5e0284e4 100644 --- a/deluge/ui/data/pixmaps/flags/bw.png +++ b/deluge/ui/data/pixmaps/flags/bw.png diff --git a/deluge/ui/data/pixmaps/flags/by.png b/deluge/ui/data/pixmaps/flags/by.png Binary files differindex 29361d693..a6c5f6c16 100644 --- a/deluge/ui/data/pixmaps/flags/by.png +++ b/deluge/ui/data/pixmaps/flags/by.png diff --git a/deluge/ui/data/pixmaps/flags/bz.png b/deluge/ui/data/pixmaps/flags/bz.png Binary files differindex 88e4ea1b3..63f74285a 100644 --- a/deluge/ui/data/pixmaps/flags/bz.png +++ b/deluge/ui/data/pixmaps/flags/bz.png diff --git a/deluge/ui/data/pixmaps/flags/ca.png b/deluge/ui/data/pixmaps/flags/ca.png Binary files differindex 155eea8ce..1e53d20a9 100644 --- a/deluge/ui/data/pixmaps/flags/ca.png +++ b/deluge/ui/data/pixmaps/flags/ca.png diff --git a/deluge/ui/data/pixmaps/flags/cc.png b/deluge/ui/data/pixmaps/flags/cc.png Binary files differindex 93509ae3a..a518e487d 100644 --- a/deluge/ui/data/pixmaps/flags/cc.png +++ b/deluge/ui/data/pixmaps/flags/cc.png diff --git a/deluge/ui/data/pixmaps/flags/cf.png b/deluge/ui/data/pixmaps/flags/cf.png Binary files differindex 3951b789f..1b9ea85bd 100644 --- a/deluge/ui/data/pixmaps/flags/cf.png +++ b/deluge/ui/data/pixmaps/flags/cf.png diff --git a/deluge/ui/data/pixmaps/flags/cg.png b/deluge/ui/data/pixmaps/flags/cg.png Binary files differindex 6f32484ff..45422bba1 100644 --- a/deluge/ui/data/pixmaps/flags/cg.png +++ b/deluge/ui/data/pixmaps/flags/cg.png diff --git a/deluge/ui/data/pixmaps/flags/ci.png b/deluge/ui/data/pixmaps/flags/ci.png Binary files differindex ee1740685..5f670c7ec 100644 --- a/deluge/ui/data/pixmaps/flags/ci.png +++ b/deluge/ui/data/pixmaps/flags/ci.png diff --git a/deluge/ui/data/pixmaps/flags/ck.png b/deluge/ui/data/pixmaps/flags/ck.png Binary files differindex 043a12f7a..904192b4d 100644 --- a/deluge/ui/data/pixmaps/flags/ck.png +++ b/deluge/ui/data/pixmaps/flags/ck.png diff --git a/deluge/ui/data/pixmaps/flags/cl.png b/deluge/ui/data/pixmaps/flags/cl.png Binary files differindex 6c05438c1..afb270e7a 100644 --- a/deluge/ui/data/pixmaps/flags/cl.png +++ b/deluge/ui/data/pixmaps/flags/cl.png diff --git a/deluge/ui/data/pixmaps/flags/cm.png b/deluge/ui/data/pixmaps/flags/cm.png Binary files differindex e2a7c0a14..395dd9fac 100644 --- a/deluge/ui/data/pixmaps/flags/cm.png +++ b/deluge/ui/data/pixmaps/flags/cm.png diff --git a/deluge/ui/data/pixmaps/flags/cn.png b/deluge/ui/data/pixmaps/flags/cn.png Binary files differindex 5a893ee6b..28ab66c84 100644 --- a/deluge/ui/data/pixmaps/flags/cn.png +++ b/deluge/ui/data/pixmaps/flags/cn.png diff --git a/deluge/ui/data/pixmaps/flags/co.png b/deluge/ui/data/pixmaps/flags/co.png Binary files differindex 24eb981b0..d31a69d36 100644 --- a/deluge/ui/data/pixmaps/flags/co.png +++ b/deluge/ui/data/pixmaps/flags/co.png diff --git a/deluge/ui/data/pixmaps/flags/cr.png b/deluge/ui/data/pixmaps/flags/cr.png Binary files differindex 4efd96730..e892b41c0 100644 --- a/deluge/ui/data/pixmaps/flags/cr.png +++ b/deluge/ui/data/pixmaps/flags/cr.png diff --git a/deluge/ui/data/pixmaps/flags/cu.png b/deluge/ui/data/pixmaps/flags/cu.png Binary files differindex addfb8e73..64205edc3 100644 --- a/deluge/ui/data/pixmaps/flags/cu.png +++ b/deluge/ui/data/pixmaps/flags/cu.png diff --git a/deluge/ui/data/pixmaps/flags/cv.png b/deluge/ui/data/pixmaps/flags/cv.png Binary files differindex 6411a6279..54f1abdca 100644 --- a/deluge/ui/data/pixmaps/flags/cv.png +++ b/deluge/ui/data/pixmaps/flags/cv.png diff --git a/deluge/ui/data/pixmaps/flags/cx.png b/deluge/ui/data/pixmaps/flags/cx.png Binary files differindex 75c8bfaed..198e299e1 100644 --- a/deluge/ui/data/pixmaps/flags/cx.png +++ b/deluge/ui/data/pixmaps/flags/cx.png diff --git a/deluge/ui/data/pixmaps/flags/cy.png b/deluge/ui/data/pixmaps/flags/cy.png Binary files differindex bbacfbe0c..6993e6b6b 100644 --- a/deluge/ui/data/pixmaps/flags/cy.png +++ b/deluge/ui/data/pixmaps/flags/cy.png diff --git a/deluge/ui/data/pixmaps/flags/de.png b/deluge/ui/data/pixmaps/flags/de.png Binary files differindex 933014a30..3d078604c 100644 --- a/deluge/ui/data/pixmaps/flags/de.png +++ b/deluge/ui/data/pixmaps/flags/de.png diff --git a/deluge/ui/data/pixmaps/flags/dj.png b/deluge/ui/data/pixmaps/flags/dj.png Binary files differindex 883343a4a..ca361d0bd 100644 --- a/deluge/ui/data/pixmaps/flags/dj.png +++ b/deluge/ui/data/pixmaps/flags/dj.png diff --git a/deluge/ui/data/pixmaps/flags/dk.png b/deluge/ui/data/pixmaps/flags/dk.png Binary files differindex 408eea295..3b4d12d94 100644 --- a/deluge/ui/data/pixmaps/flags/dk.png +++ b/deluge/ui/data/pixmaps/flags/dk.png diff --git a/deluge/ui/data/pixmaps/flags/dm.png b/deluge/ui/data/pixmaps/flags/dm.png Binary files differindex e7671bc4b..2767c49bc 100644 --- a/deluge/ui/data/pixmaps/flags/dm.png +++ b/deluge/ui/data/pixmaps/flags/dm.png diff --git a/deluge/ui/data/pixmaps/flags/do.png b/deluge/ui/data/pixmaps/flags/do.png Binary files differindex deefc7724..df9b90d33 100644 --- a/deluge/ui/data/pixmaps/flags/do.png +++ b/deluge/ui/data/pixmaps/flags/do.png diff --git a/deluge/ui/data/pixmaps/flags/dz.png b/deluge/ui/data/pixmaps/flags/dz.png Binary files differindex 65028f9b5..a450eeffe 100644 --- a/deluge/ui/data/pixmaps/flags/dz.png +++ b/deluge/ui/data/pixmaps/flags/dz.png diff --git a/deluge/ui/data/pixmaps/flags/ec.png b/deluge/ui/data/pixmaps/flags/ec.png Binary files differindex 7f93b49f5..26b50cdb4 100644 --- a/deluge/ui/data/pixmaps/flags/ec.png +++ b/deluge/ui/data/pixmaps/flags/ec.png diff --git a/deluge/ui/data/pixmaps/flags/eg.png b/deluge/ui/data/pixmaps/flags/eg.png Binary files differindex 7219431c1..26e80b9f5 100644 --- a/deluge/ui/data/pixmaps/flags/eg.png +++ b/deluge/ui/data/pixmaps/flags/eg.png diff --git a/deluge/ui/data/pixmaps/flags/eh.png b/deluge/ui/data/pixmaps/flags/eh.png Binary files differindex ae7daca43..39982d297 100644 --- a/deluge/ui/data/pixmaps/flags/eh.png +++ b/deluge/ui/data/pixmaps/flags/eh.png diff --git a/deluge/ui/data/pixmaps/flags/er.png b/deluge/ui/data/pixmaps/flags/er.png Binary files differindex b3644d4a2..d30b89f4a 100644 --- a/deluge/ui/data/pixmaps/flags/er.png +++ b/deluge/ui/data/pixmaps/flags/er.png diff --git a/deluge/ui/data/pixmaps/flags/es.png b/deluge/ui/data/pixmaps/flags/es.png Binary files differindex 9cc55dd04..afcffef78 100644 --- a/deluge/ui/data/pixmaps/flags/es.png +++ b/deluge/ui/data/pixmaps/flags/es.png diff --git a/deluge/ui/data/pixmaps/flags/et.png b/deluge/ui/data/pixmaps/flags/et.png Binary files differindex f4356fa51..a2c5d3ba7 100644 --- a/deluge/ui/data/pixmaps/flags/et.png +++ b/deluge/ui/data/pixmaps/flags/et.png diff --git a/deluge/ui/data/pixmaps/flags/fi.png b/deluge/ui/data/pixmaps/flags/fi.png Binary files differindex 73f8c91de..c89702679 100644 --- a/deluge/ui/data/pixmaps/flags/fi.png +++ b/deluge/ui/data/pixmaps/flags/fi.png diff --git a/deluge/ui/data/pixmaps/flags/fj.png b/deluge/ui/data/pixmaps/flags/fj.png Binary files differindex 0544e7a95..805d3b2af 100644 --- a/deluge/ui/data/pixmaps/flags/fj.png +++ b/deluge/ui/data/pixmaps/flags/fj.png diff --git a/deluge/ui/data/pixmaps/flags/fo.png b/deluge/ui/data/pixmaps/flags/fo.png Binary files differindex b922a4f30..63ef1bdd4 100644 --- a/deluge/ui/data/pixmaps/flags/fo.png +++ b/deluge/ui/data/pixmaps/flags/fo.png diff --git a/deluge/ui/data/pixmaps/flags/fr.png b/deluge/ui/data/pixmaps/flags/fr.png Binary files differindex 59346a911..84dd91764 100644 --- a/deluge/ui/data/pixmaps/flags/fr.png +++ b/deluge/ui/data/pixmaps/flags/fr.png diff --git a/deluge/ui/data/pixmaps/flags/ga.png b/deluge/ui/data/pixmaps/flags/ga.png Binary files differindex 63cb01397..e584067d2 100644 --- a/deluge/ui/data/pixmaps/flags/ga.png +++ b/deluge/ui/data/pixmaps/flags/ga.png diff --git a/deluge/ui/data/pixmaps/flags/gb.png b/deluge/ui/data/pixmaps/flags/gb.png Binary files differindex 95007c7be..4a351b7ab 100644 --- a/deluge/ui/data/pixmaps/flags/gb.png +++ b/deluge/ui/data/pixmaps/flags/gb.png diff --git a/deluge/ui/data/pixmaps/flags/gd.png b/deluge/ui/data/pixmaps/flags/gd.png Binary files differindex 1c7de15f6..56f2d2b23 100644 --- a/deluge/ui/data/pixmaps/flags/gd.png +++ b/deluge/ui/data/pixmaps/flags/gd.png diff --git a/deluge/ui/data/pixmaps/flags/ge.png b/deluge/ui/data/pixmaps/flags/ge.png Binary files differindex 44685b656..e2389a15a 100644 --- a/deluge/ui/data/pixmaps/flags/ge.png +++ b/deluge/ui/data/pixmaps/flags/ge.png diff --git a/deluge/ui/data/pixmaps/flags/gf.png b/deluge/ui/data/pixmaps/flags/gf.png Binary files differindex 59346a911..84dd91764 100644 --- a/deluge/ui/data/pixmaps/flags/gf.png +++ b/deluge/ui/data/pixmaps/flags/gf.png diff --git a/deluge/ui/data/pixmaps/flags/gg.png b/deluge/ui/data/pixmaps/flags/gg.png Binary files differindex f65fbe1d2..3057a73d6 100644 --- a/deluge/ui/data/pixmaps/flags/gg.png +++ b/deluge/ui/data/pixmaps/flags/gg.png diff --git a/deluge/ui/data/pixmaps/flags/gh.png b/deluge/ui/data/pixmaps/flags/gh.png Binary files differindex bc5741c3f..39f91b1fd 100644 --- a/deluge/ui/data/pixmaps/flags/gh.png +++ b/deluge/ui/data/pixmaps/flags/gh.png diff --git a/deluge/ui/data/pixmaps/flags/gi.png b/deluge/ui/data/pixmaps/flags/gi.png Binary files differindex 8edbe3748..3e631b3b1 100644 --- a/deluge/ui/data/pixmaps/flags/gi.png +++ b/deluge/ui/data/pixmaps/flags/gi.png diff --git a/deluge/ui/data/pixmaps/flags/gl.png b/deluge/ui/data/pixmaps/flags/gl.png Binary files differindex d8c022fde..40b443434 100644 --- a/deluge/ui/data/pixmaps/flags/gl.png +++ b/deluge/ui/data/pixmaps/flags/gl.png diff --git a/deluge/ui/data/pixmaps/flags/gn.png b/deluge/ui/data/pixmaps/flags/gn.png Binary files differindex b73833359..879495159 100644 --- a/deluge/ui/data/pixmaps/flags/gn.png +++ b/deluge/ui/data/pixmaps/flags/gn.png diff --git a/deluge/ui/data/pixmaps/flags/gp.png b/deluge/ui/data/pixmaps/flags/gp.png Binary files differindex 81a21d3d5..a8340a26f 100644 --- a/deluge/ui/data/pixmaps/flags/gp.png +++ b/deluge/ui/data/pixmaps/flags/gp.png diff --git a/deluge/ui/data/pixmaps/flags/gq.png b/deluge/ui/data/pixmaps/flags/gq.png Binary files differindex 5d22f18ad..f773395ca 100644 --- a/deluge/ui/data/pixmaps/flags/gq.png +++ b/deluge/ui/data/pixmaps/flags/gq.png diff --git a/deluge/ui/data/pixmaps/flags/gr.png b/deluge/ui/data/pixmaps/flags/gr.png Binary files differindex 9fcb34548..840b53462 100644 --- a/deluge/ui/data/pixmaps/flags/gr.png +++ b/deluge/ui/data/pixmaps/flags/gr.png diff --git a/deluge/ui/data/pixmaps/flags/gt.png b/deluge/ui/data/pixmaps/flags/gt.png Binary files differindex a05b89c3e..d9b836e26 100644 --- a/deluge/ui/data/pixmaps/flags/gt.png +++ b/deluge/ui/data/pixmaps/flags/gt.png diff --git a/deluge/ui/data/pixmaps/flags/gu.png b/deluge/ui/data/pixmaps/flags/gu.png Binary files differindex 83beb89ac..4886da3d4 100644 --- a/deluge/ui/data/pixmaps/flags/gu.png +++ b/deluge/ui/data/pixmaps/flags/gu.png diff --git a/deluge/ui/data/pixmaps/flags/gw.png b/deluge/ui/data/pixmaps/flags/gw.png Binary files differindex fe406b28a..db172bdf4 100644 --- a/deluge/ui/data/pixmaps/flags/gw.png +++ b/deluge/ui/data/pixmaps/flags/gw.png diff --git a/deluge/ui/data/pixmaps/flags/gy.png b/deluge/ui/data/pixmaps/flags/gy.png Binary files differindex fff34e303..6424d8e9c 100644 --- a/deluge/ui/data/pixmaps/flags/gy.png +++ b/deluge/ui/data/pixmaps/flags/gy.png diff --git a/deluge/ui/data/pixmaps/flags/hk.png b/deluge/ui/data/pixmaps/flags/hk.png Binary files differindex 6a5625a00..e969f862b 100644 --- a/deluge/ui/data/pixmaps/flags/hk.png +++ b/deluge/ui/data/pixmaps/flags/hk.png diff --git a/deluge/ui/data/pixmaps/flags/hm.png b/deluge/ui/data/pixmaps/flags/hm.png Binary files differindex 0de18f0b2..0335dbfc8 100644 --- a/deluge/ui/data/pixmaps/flags/hm.png +++ b/deluge/ui/data/pixmaps/flags/hm.png diff --git a/deluge/ui/data/pixmaps/flags/hn.png b/deluge/ui/data/pixmaps/flags/hn.png Binary files differindex 77a009ace..e3faca9f3 100644 --- a/deluge/ui/data/pixmaps/flags/hn.png +++ b/deluge/ui/data/pixmaps/flags/hn.png diff --git a/deluge/ui/data/pixmaps/flags/hr.png b/deluge/ui/data/pixmaps/flags/hr.png Binary files differindex f56bc2926..aa64bf889 100644 --- a/deluge/ui/data/pixmaps/flags/hr.png +++ b/deluge/ui/data/pixmaps/flags/hr.png diff --git a/deluge/ui/data/pixmaps/flags/ht.png b/deluge/ui/data/pixmaps/flags/ht.png Binary files differindex 16d00e8c1..bbcfd7ed6 100644 --- a/deluge/ui/data/pixmaps/flags/ht.png +++ b/deluge/ui/data/pixmaps/flags/ht.png diff --git a/deluge/ui/data/pixmaps/flags/id.png b/deluge/ui/data/pixmaps/flags/id.png Binary files differindex 201ad0fcb..b1cdf79b9 100644 --- a/deluge/ui/data/pixmaps/flags/id.png +++ b/deluge/ui/data/pixmaps/flags/id.png diff --git a/deluge/ui/data/pixmaps/flags/in.png b/deluge/ui/data/pixmaps/flags/in.png Binary files differindex 0b515d76a..0f5801e7f 100644 --- a/deluge/ui/data/pixmaps/flags/in.png +++ b/deluge/ui/data/pixmaps/flags/in.png diff --git a/deluge/ui/data/pixmaps/flags/iq.png b/deluge/ui/data/pixmaps/flags/iq.png Binary files differindex cb1ca164e..221fbc6df 100644 --- a/deluge/ui/data/pixmaps/flags/iq.png +++ b/deluge/ui/data/pixmaps/flags/iq.png diff --git a/deluge/ui/data/pixmaps/flags/ir.png b/deluge/ui/data/pixmaps/flags/ir.png Binary files differindex f6d1027bd..8992fa456 100644 --- a/deluge/ui/data/pixmaps/flags/ir.png +++ b/deluge/ui/data/pixmaps/flags/ir.png diff --git a/deluge/ui/data/pixmaps/flags/is.png b/deluge/ui/data/pixmaps/flags/is.png Binary files differindex f7383cbce..3f5d5c42f 100644 --- a/deluge/ui/data/pixmaps/flags/is.png +++ b/deluge/ui/data/pixmaps/flags/is.png diff --git a/deluge/ui/data/pixmaps/flags/it.png b/deluge/ui/data/pixmaps/flags/it.png Binary files differindex c3c3143c7..ad34d9f2c 100644 --- a/deluge/ui/data/pixmaps/flags/it.png +++ b/deluge/ui/data/pixmaps/flags/it.png diff --git a/deluge/ui/data/pixmaps/flags/jp.png b/deluge/ui/data/pixmaps/flags/jp.png Binary files differindex e470d756d..def1d3c7d 100644 --- a/deluge/ui/data/pixmaps/flags/jp.png +++ b/deluge/ui/data/pixmaps/flags/jp.png diff --git a/deluge/ui/data/pixmaps/flags/ke.png b/deluge/ui/data/pixmaps/flags/ke.png Binary files differindex 212cc2e0e..2adad2d51 100644 --- a/deluge/ui/data/pixmaps/flags/ke.png +++ b/deluge/ui/data/pixmaps/flags/ke.png diff --git a/deluge/ui/data/pixmaps/flags/kg.png b/deluge/ui/data/pixmaps/flags/kg.png Binary files differindex 848da86b8..8be5235df 100644 --- a/deluge/ui/data/pixmaps/flags/kg.png +++ b/deluge/ui/data/pixmaps/flags/kg.png diff --git a/deluge/ui/data/pixmaps/flags/kh.png b/deluge/ui/data/pixmaps/flags/kh.png Binary files differindex bf961c5d0..24da97236 100644 --- a/deluge/ui/data/pixmaps/flags/kh.png +++ b/deluge/ui/data/pixmaps/flags/kh.png diff --git a/deluge/ui/data/pixmaps/flags/km.png b/deluge/ui/data/pixmaps/flags/km.png Binary files differindex 7ead97e0e..625437d25 100644 --- a/deluge/ui/data/pixmaps/flags/km.png +++ b/deluge/ui/data/pixmaps/flags/km.png diff --git a/deluge/ui/data/pixmaps/flags/kp.png b/deluge/ui/data/pixmaps/flags/kp.png Binary files differindex b517d1c20..fb473ec22 100644 --- a/deluge/ui/data/pixmaps/flags/kp.png +++ b/deluge/ui/data/pixmaps/flags/kp.png diff --git a/deluge/ui/data/pixmaps/flags/kr.png b/deluge/ui/data/pixmaps/flags/kr.png Binary files differindex ea3122e47..55bcf3872 100644 --- a/deluge/ui/data/pixmaps/flags/kr.png +++ b/deluge/ui/data/pixmaps/flags/kr.png diff --git a/deluge/ui/data/pixmaps/flags/kw.png b/deluge/ui/data/pixmaps/flags/kw.png Binary files differindex a3a7fcbcf..565cc0369 100644 --- a/deluge/ui/data/pixmaps/flags/kw.png +++ b/deluge/ui/data/pixmaps/flags/kw.png diff --git a/deluge/ui/data/pixmaps/flags/ky.png b/deluge/ui/data/pixmaps/flags/ky.png Binary files differindex 63b55463f..b08b3bccb 100644 --- a/deluge/ui/data/pixmaps/flags/ky.png +++ b/deluge/ui/data/pixmaps/flags/ky.png diff --git a/deluge/ui/data/pixmaps/flags/kz.png b/deluge/ui/data/pixmaps/flags/kz.png Binary files differindex 193cf3872..49fcc2611 100644 --- a/deluge/ui/data/pixmaps/flags/kz.png +++ b/deluge/ui/data/pixmaps/flags/kz.png diff --git a/deluge/ui/data/pixmaps/flags/la.png b/deluge/ui/data/pixmaps/flags/la.png Binary files differindex 85b6097a1..0098f1b80 100644 --- a/deluge/ui/data/pixmaps/flags/la.png +++ b/deluge/ui/data/pixmaps/flags/la.png diff --git a/deluge/ui/data/pixmaps/flags/lb.png b/deluge/ui/data/pixmaps/flags/lb.png Binary files differindex b8e9c2f15..c519388ab 100644 --- a/deluge/ui/data/pixmaps/flags/lb.png +++ b/deluge/ui/data/pixmaps/flags/lb.png diff --git a/deluge/ui/data/pixmaps/flags/lc.png b/deluge/ui/data/pixmaps/flags/lc.png Binary files differindex d8a8656b5..f42f007ee 100644 --- a/deluge/ui/data/pixmaps/flags/lc.png +++ b/deluge/ui/data/pixmaps/flags/lc.png diff --git a/deluge/ui/data/pixmaps/flags/li.png b/deluge/ui/data/pixmaps/flags/li.png Binary files differindex 6bb7b2b7b..02f75488b 100644 --- a/deluge/ui/data/pixmaps/flags/li.png +++ b/deluge/ui/data/pixmaps/flags/li.png diff --git a/deluge/ui/data/pixmaps/flags/lk.png b/deluge/ui/data/pixmaps/flags/lk.png Binary files differindex 4f16cd77a..22abcdb68 100644 --- a/deluge/ui/data/pixmaps/flags/lk.png +++ b/deluge/ui/data/pixmaps/flags/lk.png diff --git a/deluge/ui/data/pixmaps/flags/lr.png b/deluge/ui/data/pixmaps/flags/lr.png Binary files differindex d76e171e9..676fda789 100644 --- a/deluge/ui/data/pixmaps/flags/lr.png +++ b/deluge/ui/data/pixmaps/flags/lr.png diff --git a/deluge/ui/data/pixmaps/flags/ls.png b/deluge/ui/data/pixmaps/flags/ls.png Binary files differindex 02cdd660f..3a2fcae5a 100644 --- a/deluge/ui/data/pixmaps/flags/ls.png +++ b/deluge/ui/data/pixmaps/flags/ls.png diff --git a/deluge/ui/data/pixmaps/flags/lt.png b/deluge/ui/data/pixmaps/flags/lt.png Binary files differindex e0714c541..05a445c00 100644 --- a/deluge/ui/data/pixmaps/flags/lt.png +++ b/deluge/ui/data/pixmaps/flags/lt.png diff --git a/deluge/ui/data/pixmaps/flags/lu.png b/deluge/ui/data/pixmaps/flags/lu.png Binary files differindex f750b0c24..c9d4d7253 100644 --- a/deluge/ui/data/pixmaps/flags/lu.png +++ b/deluge/ui/data/pixmaps/flags/lu.png diff --git a/deluge/ui/data/pixmaps/flags/lv.png b/deluge/ui/data/pixmaps/flags/lv.png Binary files differindex f35709550..72504d11d 100644 --- a/deluge/ui/data/pixmaps/flags/lv.png +++ b/deluge/ui/data/pixmaps/flags/lv.png diff --git a/deluge/ui/data/pixmaps/flags/ly.png b/deluge/ui/data/pixmaps/flags/ly.png Binary files differindex 9e35e389d..ebd3cf62c 100644 --- a/deluge/ui/data/pixmaps/flags/ly.png +++ b/deluge/ui/data/pixmaps/flags/ly.png diff --git a/deluge/ui/data/pixmaps/flags/ma.png b/deluge/ui/data/pixmaps/flags/ma.png Binary files differindex b8f8decfa..62d706570 100644 --- a/deluge/ui/data/pixmaps/flags/ma.png +++ b/deluge/ui/data/pixmaps/flags/ma.png diff --git a/deluge/ui/data/pixmaps/flags/mc.png b/deluge/ui/data/pixmaps/flags/mc.png Binary files differindex 67099ea18..3f2d6be4a 100644 --- a/deluge/ui/data/pixmaps/flags/mc.png +++ b/deluge/ui/data/pixmaps/flags/mc.png diff --git a/deluge/ui/data/pixmaps/flags/md.png b/deluge/ui/data/pixmaps/flags/md.png Binary files differindex 6ff6cf59e..c72632e1d 100644 --- a/deluge/ui/data/pixmaps/flags/md.png +++ b/deluge/ui/data/pixmaps/flags/md.png diff --git a/deluge/ui/data/pixmaps/flags/me.png b/deluge/ui/data/pixmaps/flags/me.png Binary files differindex 36cbdd582..0760fb8e8 100644 --- a/deluge/ui/data/pixmaps/flags/me.png +++ b/deluge/ui/data/pixmaps/flags/me.png diff --git a/deluge/ui/data/pixmaps/flags/mg.png b/deluge/ui/data/pixmaps/flags/mg.png Binary files differindex d9313e295..7000ff015 100644 --- a/deluge/ui/data/pixmaps/flags/mg.png +++ b/deluge/ui/data/pixmaps/flags/mg.png diff --git a/deluge/ui/data/pixmaps/flags/mh.png b/deluge/ui/data/pixmaps/flags/mh.png Binary files differindex 7618cc6fa..fe2caeff1 100644 --- a/deluge/ui/data/pixmaps/flags/mh.png +++ b/deluge/ui/data/pixmaps/flags/mh.png diff --git a/deluge/ui/data/pixmaps/flags/mk.png b/deluge/ui/data/pixmaps/flags/mk.png Binary files differindex 1c98d5154..8739fee7b 100644 --- a/deluge/ui/data/pixmaps/flags/mk.png +++ b/deluge/ui/data/pixmaps/flags/mk.png diff --git a/deluge/ui/data/pixmaps/flags/ml.png b/deluge/ui/data/pixmaps/flags/ml.png Binary files differindex d59cea847..f35c3a302 100644 --- a/deluge/ui/data/pixmaps/flags/ml.png +++ b/deluge/ui/data/pixmaps/flags/ml.png diff --git a/deluge/ui/data/pixmaps/flags/mm.png b/deluge/ui/data/pixmaps/flags/mm.png Binary files differindex 175fc5787..94bcb9362 100644 --- a/deluge/ui/data/pixmaps/flags/mm.png +++ b/deluge/ui/data/pixmaps/flags/mm.png diff --git a/deluge/ui/data/pixmaps/flags/mn.png b/deluge/ui/data/pixmaps/flags/mn.png Binary files differindex 0ad97b350..8e20c1d57 100644 --- a/deluge/ui/data/pixmaps/flags/mn.png +++ b/deluge/ui/data/pixmaps/flags/mn.png diff --git a/deluge/ui/data/pixmaps/flags/mo.png b/deluge/ui/data/pixmaps/flags/mo.png Binary files differindex f49e677e8..bbc14deef 100644 --- a/deluge/ui/data/pixmaps/flags/mo.png +++ b/deluge/ui/data/pixmaps/flags/mo.png diff --git a/deluge/ui/data/pixmaps/flags/mp.png b/deluge/ui/data/pixmaps/flags/mp.png Binary files differindex e91b75b63..ab6d5b8b7 100644 --- a/deluge/ui/data/pixmaps/flags/mp.png +++ b/deluge/ui/data/pixmaps/flags/mp.png diff --git a/deluge/ui/data/pixmaps/flags/mq.png b/deluge/ui/data/pixmaps/flags/mq.png Binary files differindex 5c5ae824b..9f52d1556 100644 --- a/deluge/ui/data/pixmaps/flags/mq.png +++ b/deluge/ui/data/pixmaps/flags/mq.png diff --git a/deluge/ui/data/pixmaps/flags/mr.png b/deluge/ui/data/pixmaps/flags/mr.png Binary files differindex 91d9a5a9d..e335ec22c 100644 --- a/deluge/ui/data/pixmaps/flags/mr.png +++ b/deluge/ui/data/pixmaps/flags/mr.png diff --git a/deluge/ui/data/pixmaps/flags/ms.png b/deluge/ui/data/pixmaps/flags/ms.png Binary files differindex d45c16c39..addd14417 100644 --- a/deluge/ui/data/pixmaps/flags/ms.png +++ b/deluge/ui/data/pixmaps/flags/ms.png diff --git a/deluge/ui/data/pixmaps/flags/mu.png b/deluge/ui/data/pixmaps/flags/mu.png Binary files differindex ecdc1869a..38b6687a1 100644 --- a/deluge/ui/data/pixmaps/flags/mu.png +++ b/deluge/ui/data/pixmaps/flags/mu.png diff --git a/deluge/ui/data/pixmaps/flags/mv.png b/deluge/ui/data/pixmaps/flags/mv.png Binary files differindex b17294451..1185f135c 100644 --- a/deluge/ui/data/pixmaps/flags/mv.png +++ b/deluge/ui/data/pixmaps/flags/mv.png diff --git a/deluge/ui/data/pixmaps/flags/mw.png b/deluge/ui/data/pixmaps/flags/mw.png Binary files differindex cb9b61f49..d68ffeefb 100644 --- a/deluge/ui/data/pixmaps/flags/mw.png +++ b/deluge/ui/data/pixmaps/flags/mw.png diff --git a/deluge/ui/data/pixmaps/flags/mx.png b/deluge/ui/data/pixmaps/flags/mx.png Binary files differindex b8e70b868..996bcaef3 100644 --- a/deluge/ui/data/pixmaps/flags/mx.png +++ b/deluge/ui/data/pixmaps/flags/mx.png diff --git a/deluge/ui/data/pixmaps/flags/my.png b/deluge/ui/data/pixmaps/flags/my.png Binary files differindex 879cf519c..2b13696be 100644 --- a/deluge/ui/data/pixmaps/flags/my.png +++ b/deluge/ui/data/pixmaps/flags/my.png diff --git a/deluge/ui/data/pixmaps/flags/mz.png b/deluge/ui/data/pixmaps/flags/mz.png Binary files differindex 35545922b..484e99892 100644 --- a/deluge/ui/data/pixmaps/flags/mz.png +++ b/deluge/ui/data/pixmaps/flags/mz.png diff --git a/deluge/ui/data/pixmaps/flags/na.png b/deluge/ui/data/pixmaps/flags/na.png Binary files differindex 426cde9a5..806e2d624 100644 --- a/deluge/ui/data/pixmaps/flags/na.png +++ b/deluge/ui/data/pixmaps/flags/na.png diff --git a/deluge/ui/data/pixmaps/flags/nc.png b/deluge/ui/data/pixmaps/flags/nc.png Binary files differindex 88c35ac13..de2314a82 100644 --- a/deluge/ui/data/pixmaps/flags/nc.png +++ b/deluge/ui/data/pixmaps/flags/nc.png diff --git a/deluge/ui/data/pixmaps/flags/ne.png b/deluge/ui/data/pixmaps/flags/ne.png Binary files differindex eff1c3530..f76deb1cc 100644 --- a/deluge/ui/data/pixmaps/flags/ne.png +++ b/deluge/ui/data/pixmaps/flags/ne.png diff --git a/deluge/ui/data/pixmaps/flags/ng.png b/deluge/ui/data/pixmaps/flags/ng.png Binary files differindex e2f2b61d1..4e66ac3c0 100644 --- a/deluge/ui/data/pixmaps/flags/ng.png +++ b/deluge/ui/data/pixmaps/flags/ng.png diff --git a/deluge/ui/data/pixmaps/flags/ni.png b/deluge/ui/data/pixmaps/flags/ni.png Binary files differindex 9332b95c2..6d0cd865d 100644 --- a/deluge/ui/data/pixmaps/flags/ni.png +++ b/deluge/ui/data/pixmaps/flags/ni.png diff --git a/deluge/ui/data/pixmaps/flags/nl.png b/deluge/ui/data/pixmaps/flags/nl.png Binary files differindex 267d1dceb..b0653cc8a 100644 --- a/deluge/ui/data/pixmaps/flags/nl.png +++ b/deluge/ui/data/pixmaps/flags/nl.png diff --git a/deluge/ui/data/pixmaps/flags/no.png b/deluge/ui/data/pixmaps/flags/no.png Binary files differindex ae9060caf..faaa529d1 100644 --- a/deluge/ui/data/pixmaps/flags/no.png +++ b/deluge/ui/data/pixmaps/flags/no.png diff --git a/deluge/ui/data/pixmaps/flags/np.png b/deluge/ui/data/pixmaps/flags/np.png Binary files differindex 6637ea544..9e161085b 100644 --- a/deluge/ui/data/pixmaps/flags/np.png +++ b/deluge/ui/data/pixmaps/flags/np.png diff --git a/deluge/ui/data/pixmaps/flags/nr.png b/deluge/ui/data/pixmaps/flags/nr.png Binary files differindex 60f73461e..c28d3eec7 100644 --- a/deluge/ui/data/pixmaps/flags/nr.png +++ b/deluge/ui/data/pixmaps/flags/nr.png diff --git a/deluge/ui/data/pixmaps/flags/nu.png b/deluge/ui/data/pixmaps/flags/nu.png Binary files differindex 21e52a76e..9e82b5e12 100644 --- a/deluge/ui/data/pixmaps/flags/nu.png +++ b/deluge/ui/data/pixmaps/flags/nu.png diff --git a/deluge/ui/data/pixmaps/flags/nz.png b/deluge/ui/data/pixmaps/flags/nz.png Binary files differindex d5a7ebc7b..db738747b 100644 --- a/deluge/ui/data/pixmaps/flags/nz.png +++ b/deluge/ui/data/pixmaps/flags/nz.png diff --git a/deluge/ui/data/pixmaps/flags/om.png b/deluge/ui/data/pixmaps/flags/om.png Binary files differindex 6dc30d4fc..aa02242c9 100644 --- a/deluge/ui/data/pixmaps/flags/om.png +++ b/deluge/ui/data/pixmaps/flags/om.png diff --git a/deluge/ui/data/pixmaps/flags/pa.png b/deluge/ui/data/pixmaps/flags/pa.png Binary files differindex 895443640..810268af3 100644 --- a/deluge/ui/data/pixmaps/flags/pa.png +++ b/deluge/ui/data/pixmaps/flags/pa.png diff --git a/deluge/ui/data/pixmaps/flags/pf.png b/deluge/ui/data/pixmaps/flags/pf.png Binary files differindex ea4d04611..9a05d6674 100644 --- a/deluge/ui/data/pixmaps/flags/pf.png +++ b/deluge/ui/data/pixmaps/flags/pf.png diff --git a/deluge/ui/data/pixmaps/flags/pg.png b/deluge/ui/data/pixmaps/flags/pg.png Binary files differindex c97ce6a76..e4ec2d175 100644 --- a/deluge/ui/data/pixmaps/flags/pg.png +++ b/deluge/ui/data/pixmaps/flags/pg.png diff --git a/deluge/ui/data/pixmaps/flags/ph.png b/deluge/ui/data/pixmaps/flags/ph.png Binary files differindex 67d289173..423209405 100644 --- a/deluge/ui/data/pixmaps/flags/ph.png +++ b/deluge/ui/data/pixmaps/flags/ph.png diff --git a/deluge/ui/data/pixmaps/flags/pk.png b/deluge/ui/data/pixmaps/flags/pk.png Binary files differindex a92d71c08..bb4822ffc 100644 --- a/deluge/ui/data/pixmaps/flags/pk.png +++ b/deluge/ui/data/pixmaps/flags/pk.png diff --git a/deluge/ui/data/pixmaps/flags/pl.png b/deluge/ui/data/pixmaps/flags/pl.png Binary files differindex 2c4f2ed1f..843568a6a 100644 --- a/deluge/ui/data/pixmaps/flags/pl.png +++ b/deluge/ui/data/pixmaps/flags/pl.png diff --git a/deluge/ui/data/pixmaps/flags/pm.png b/deluge/ui/data/pixmaps/flags/pm.png Binary files differindex ce429f0d2..f167375f0 100644 --- a/deluge/ui/data/pixmaps/flags/pm.png +++ b/deluge/ui/data/pixmaps/flags/pm.png diff --git a/deluge/ui/data/pixmaps/flags/pr.png b/deluge/ui/data/pixmaps/flags/pr.png Binary files differindex 60d359917..0dc6d8d37 100644 --- a/deluge/ui/data/pixmaps/flags/pr.png +++ b/deluge/ui/data/pixmaps/flags/pr.png diff --git a/deluge/ui/data/pixmaps/flags/ps.png b/deluge/ui/data/pixmaps/flags/ps.png Binary files differindex ceda7d7aa..3955b5cd7 100644 --- a/deluge/ui/data/pixmaps/flags/ps.png +++ b/deluge/ui/data/pixmaps/flags/ps.png diff --git a/deluge/ui/data/pixmaps/flags/pt.png b/deluge/ui/data/pixmaps/flags/pt.png Binary files differindex c489acda3..ee95fc82f 100644 --- a/deluge/ui/data/pixmaps/flags/pt.png +++ b/deluge/ui/data/pixmaps/flags/pt.png diff --git a/deluge/ui/data/pixmaps/flags/pw.png b/deluge/ui/data/pixmaps/flags/pw.png Binary files differindex 668c93a03..43d9dcb85 100644 --- a/deluge/ui/data/pixmaps/flags/pw.png +++ b/deluge/ui/data/pixmaps/flags/pw.png diff --git a/deluge/ui/data/pixmaps/flags/py.png b/deluge/ui/data/pixmaps/flags/py.png Binary files differindex d5e943b0c..bc5d77db3 100644 --- a/deluge/ui/data/pixmaps/flags/py.png +++ b/deluge/ui/data/pixmaps/flags/py.png diff --git a/deluge/ui/data/pixmaps/flags/qa.png b/deluge/ui/data/pixmaps/flags/qa.png Binary files differindex 08a3793e7..09709cc63 100644 --- a/deluge/ui/data/pixmaps/flags/qa.png +++ b/deluge/ui/data/pixmaps/flags/qa.png diff --git a/deluge/ui/data/pixmaps/flags/re.png b/deluge/ui/data/pixmaps/flags/re.png Binary files differindex 59346a911..84dd91764 100644 --- a/deluge/ui/data/pixmaps/flags/re.png +++ b/deluge/ui/data/pixmaps/flags/re.png diff --git a/deluge/ui/data/pixmaps/flags/ro.png b/deluge/ui/data/pixmaps/flags/ro.png Binary files differindex f80a44a7f..594f245f5 100644 --- a/deluge/ui/data/pixmaps/flags/ro.png +++ b/deluge/ui/data/pixmaps/flags/ro.png diff --git a/deluge/ui/data/pixmaps/flags/rs.png b/deluge/ui/data/pixmaps/flags/rs.png Binary files differindex 9a35bcc55..03176f73d 100644 --- a/deluge/ui/data/pixmaps/flags/rs.png +++ b/deluge/ui/data/pixmaps/flags/rs.png diff --git a/deluge/ui/data/pixmaps/flags/rw.png b/deluge/ui/data/pixmaps/flags/rw.png Binary files differindex 0d3143791..c7e422a7b 100644 --- a/deluge/ui/data/pixmaps/flags/rw.png +++ b/deluge/ui/data/pixmaps/flags/rw.png diff --git a/deluge/ui/data/pixmaps/flags/sa.png b/deluge/ui/data/pixmaps/flags/sa.png Binary files differindex 2fc170454..bd19de219 100644 --- a/deluge/ui/data/pixmaps/flags/sa.png +++ b/deluge/ui/data/pixmaps/flags/sa.png diff --git a/deluge/ui/data/pixmaps/flags/sc.png b/deluge/ui/data/pixmaps/flags/sc.png Binary files differindex c25e11369..e0bbfa72d 100644 --- a/deluge/ui/data/pixmaps/flags/sc.png +++ b/deluge/ui/data/pixmaps/flags/sc.png diff --git a/deluge/ui/data/pixmaps/flags/sd.png b/deluge/ui/data/pixmaps/flags/sd.png Binary files differindex d22408c30..cbca3d2b5 100644 --- a/deluge/ui/data/pixmaps/flags/sd.png +++ b/deluge/ui/data/pixmaps/flags/sd.png diff --git a/deluge/ui/data/pixmaps/flags/se.png b/deluge/ui/data/pixmaps/flags/se.png Binary files differindex 482101a66..e3d273a6f 100644 --- a/deluge/ui/data/pixmaps/flags/se.png +++ b/deluge/ui/data/pixmaps/flags/se.png diff --git a/deluge/ui/data/pixmaps/flags/sg.png b/deluge/ui/data/pixmaps/flags/sg.png Binary files differindex 055e04a1e..898748b76 100644 --- a/deluge/ui/data/pixmaps/flags/sg.png +++ b/deluge/ui/data/pixmaps/flags/sg.png diff --git a/deluge/ui/data/pixmaps/flags/sh.png b/deluge/ui/data/pixmaps/flags/sh.png Binary files differindex 838dad78e..cb5282e2d 100644 --- a/deluge/ui/data/pixmaps/flags/sh.png +++ b/deluge/ui/data/pixmaps/flags/sh.png diff --git a/deluge/ui/data/pixmaps/flags/si.png b/deluge/ui/data/pixmaps/flags/si.png Binary files differindex 206721e5f..d2f976b3a 100644 --- a/deluge/ui/data/pixmaps/flags/si.png +++ b/deluge/ui/data/pixmaps/flags/si.png diff --git a/deluge/ui/data/pixmaps/flags/sj.png b/deluge/ui/data/pixmaps/flags/sj.png Binary files differindex ae9060caf..faaa529d1 100644 --- a/deluge/ui/data/pixmaps/flags/sj.png +++ b/deluge/ui/data/pixmaps/flags/sj.png diff --git a/deluge/ui/data/pixmaps/flags/sk.png b/deluge/ui/data/pixmaps/flags/sk.png Binary files differindex acdd1893d..6f36d1429 100644 --- a/deluge/ui/data/pixmaps/flags/sk.png +++ b/deluge/ui/data/pixmaps/flags/sk.png diff --git a/deluge/ui/data/pixmaps/flags/sl.png b/deluge/ui/data/pixmaps/flags/sl.png Binary files differindex d50e5d4ef..3d70d224c 100644 --- a/deluge/ui/data/pixmaps/flags/sl.png +++ b/deluge/ui/data/pixmaps/flags/sl.png diff --git a/deluge/ui/data/pixmaps/flags/sn.png b/deluge/ui/data/pixmaps/flags/sn.png Binary files differindex 4029d3a7d..3be2d4c56 100644 --- a/deluge/ui/data/pixmaps/flags/sn.png +++ b/deluge/ui/data/pixmaps/flags/sn.png diff --git a/deluge/ui/data/pixmaps/flags/so.png b/deluge/ui/data/pixmaps/flags/so.png Binary files differindex b17fcf27f..c3169fa64 100644 --- a/deluge/ui/data/pixmaps/flags/so.png +++ b/deluge/ui/data/pixmaps/flags/so.png diff --git a/deluge/ui/data/pixmaps/flags/sr.png b/deluge/ui/data/pixmaps/flags/sr.png Binary files differindex e79029176..006f86f05 100644 --- a/deluge/ui/data/pixmaps/flags/sr.png +++ b/deluge/ui/data/pixmaps/flags/sr.png diff --git a/deluge/ui/data/pixmaps/flags/st.png b/deluge/ui/data/pixmaps/flags/st.png Binary files differindex 63c3e12ff..086db357a 100644 --- a/deluge/ui/data/pixmaps/flags/st.png +++ b/deluge/ui/data/pixmaps/flags/st.png diff --git a/deluge/ui/data/pixmaps/flags/sv.png b/deluge/ui/data/pixmaps/flags/sv.png Binary files differindex 309eb39d3..691fc669b 100644 --- a/deluge/ui/data/pixmaps/flags/sv.png +++ b/deluge/ui/data/pixmaps/flags/sv.png diff --git a/deluge/ui/data/pixmaps/flags/sy.png b/deluge/ui/data/pixmaps/flags/sy.png Binary files differindex 8a369aabf..5a28ce67b 100644 --- a/deluge/ui/data/pixmaps/flags/sy.png +++ b/deluge/ui/data/pixmaps/flags/sy.png diff --git a/deluge/ui/data/pixmaps/flags/sz.png b/deluge/ui/data/pixmaps/flags/sz.png Binary files differindex 2da75092b..fba6beffc 100644 --- a/deluge/ui/data/pixmaps/flags/sz.png +++ b/deluge/ui/data/pixmaps/flags/sz.png diff --git a/deluge/ui/data/pixmaps/flags/tc.png b/deluge/ui/data/pixmaps/flags/tc.png Binary files differindex c7b735443..dfecacd03 100644 --- a/deluge/ui/data/pixmaps/flags/tc.png +++ b/deluge/ui/data/pixmaps/flags/tc.png diff --git a/deluge/ui/data/pixmaps/flags/td.png b/deluge/ui/data/pixmaps/flags/td.png Binary files differindex c82f450f0..27b6cb805 100644 --- a/deluge/ui/data/pixmaps/flags/td.png +++ b/deluge/ui/data/pixmaps/flags/td.png diff --git a/deluge/ui/data/pixmaps/flags/tf.png b/deluge/ui/data/pixmaps/flags/tf.png Binary files differindex bf8077348..0f56fa04b 100644 --- a/deluge/ui/data/pixmaps/flags/tf.png +++ b/deluge/ui/data/pixmaps/flags/tf.png diff --git a/deluge/ui/data/pixmaps/flags/th.png b/deluge/ui/data/pixmaps/flags/th.png Binary files differindex bf739941e..744865f57 100644 --- a/deluge/ui/data/pixmaps/flags/th.png +++ b/deluge/ui/data/pixmaps/flags/th.png diff --git a/deluge/ui/data/pixmaps/flags/tj.png b/deluge/ui/data/pixmaps/flags/tj.png Binary files differindex 3efd165cc..837dd2caa 100644 --- a/deluge/ui/data/pixmaps/flags/tj.png +++ b/deluge/ui/data/pixmaps/flags/tj.png diff --git a/deluge/ui/data/pixmaps/flags/tl.png b/deluge/ui/data/pixmaps/flags/tl.png Binary files differindex d7c41a9c7..843ec671d 100644 --- a/deluge/ui/data/pixmaps/flags/tl.png +++ b/deluge/ui/data/pixmaps/flags/tl.png diff --git a/deluge/ui/data/pixmaps/flags/tm.png b/deluge/ui/data/pixmaps/flags/tm.png Binary files differindex a2aed22dd..6356f3c5d 100644 --- a/deluge/ui/data/pixmaps/flags/tm.png +++ b/deluge/ui/data/pixmaps/flags/tm.png diff --git a/deluge/ui/data/pixmaps/flags/tn.png b/deluge/ui/data/pixmaps/flags/tn.png Binary files differindex 61086fa77..fdf73c09d 100644 --- a/deluge/ui/data/pixmaps/flags/tn.png +++ b/deluge/ui/data/pixmaps/flags/tn.png diff --git a/deluge/ui/data/pixmaps/flags/to.png b/deluge/ui/data/pixmaps/flags/to.png Binary files differindex 8e49d30e3..7bd4389a2 100644 --- a/deluge/ui/data/pixmaps/flags/to.png +++ b/deluge/ui/data/pixmaps/flags/to.png diff --git a/deluge/ui/data/pixmaps/flags/tp.png b/deluge/ui/data/pixmaps/flags/tp.png Binary files differindex aa298c0f8..a8bb82fe4 100644 --- a/deluge/ui/data/pixmaps/flags/tp.png +++ b/deluge/ui/data/pixmaps/flags/tp.png diff --git a/deluge/ui/data/pixmaps/flags/tr.png b/deluge/ui/data/pixmaps/flags/tr.png Binary files differindex 09f82d09e..34b5a1c4b 100644 --- a/deluge/ui/data/pixmaps/flags/tr.png +++ b/deluge/ui/data/pixmaps/flags/tr.png diff --git a/deluge/ui/data/pixmaps/flags/tt.png b/deluge/ui/data/pixmaps/flags/tt.png Binary files differindex 18b09e1d3..7ff729b30 100644 --- a/deluge/ui/data/pixmaps/flags/tt.png +++ b/deluge/ui/data/pixmaps/flags/tt.png diff --git a/deluge/ui/data/pixmaps/flags/tz.png b/deluge/ui/data/pixmaps/flags/tz.png Binary files differindex 3543543ce..38fbdf18f 100644 --- a/deluge/ui/data/pixmaps/flags/tz.png +++ b/deluge/ui/data/pixmaps/flags/tz.png diff --git a/deluge/ui/data/pixmaps/flags/ua.png b/deluge/ui/data/pixmaps/flags/ua.png Binary files differindex e09f110dd..08e38f95e 100644 --- a/deluge/ui/data/pixmaps/flags/ua.png +++ b/deluge/ui/data/pixmaps/flags/ua.png diff --git a/deluge/ui/data/pixmaps/flags/ug.png b/deluge/ui/data/pixmaps/flags/ug.png Binary files differindex d1d9bc0f8..2fa3e44ce 100644 --- a/deluge/ui/data/pixmaps/flags/ug.png +++ b/deluge/ui/data/pixmaps/flags/ug.png diff --git a/deluge/ui/data/pixmaps/flags/um.png b/deluge/ui/data/pixmaps/flags/um.png Binary files differindex 2694ab98e..a0617bd81 100644 --- a/deluge/ui/data/pixmaps/flags/um.png +++ b/deluge/ui/data/pixmaps/flags/um.png diff --git a/deluge/ui/data/pixmaps/flags/us.png b/deluge/ui/data/pixmaps/flags/us.png Binary files differindex 68707f40c..5e0b8cf5c 100644 --- a/deluge/ui/data/pixmaps/flags/us.png +++ b/deluge/ui/data/pixmaps/flags/us.png diff --git a/deluge/ui/data/pixmaps/flags/uy.png b/deluge/ui/data/pixmaps/flags/uy.png Binary files differindex 4c515670f..e69713a6e 100644 --- a/deluge/ui/data/pixmaps/flags/uy.png +++ b/deluge/ui/data/pixmaps/flags/uy.png diff --git a/deluge/ui/data/pixmaps/flags/uz.png b/deluge/ui/data/pixmaps/flags/uz.png Binary files differindex e85d67d4b..5d3d7c16d 100644 --- a/deluge/ui/data/pixmaps/flags/uz.png +++ b/deluge/ui/data/pixmaps/flags/uz.png diff --git a/deluge/ui/data/pixmaps/flags/va.png b/deluge/ui/data/pixmaps/flags/va.png Binary files differindex 582e2ba16..af8f6b23e 100644 --- a/deluge/ui/data/pixmaps/flags/va.png +++ b/deluge/ui/data/pixmaps/flags/va.png diff --git a/deluge/ui/data/pixmaps/flags/vc.png b/deluge/ui/data/pixmaps/flags/vc.png Binary files differindex e5726112b..cf1d6e204 100644 --- a/deluge/ui/data/pixmaps/flags/vc.png +++ b/deluge/ui/data/pixmaps/flags/vc.png diff --git a/deluge/ui/data/pixmaps/flags/ve.png b/deluge/ui/data/pixmaps/flags/ve.png Binary files differindex 0899d54ae..e26b28a08 100644 --- a/deluge/ui/data/pixmaps/flags/ve.png +++ b/deluge/ui/data/pixmaps/flags/ve.png diff --git a/deluge/ui/data/pixmaps/flags/vg.png b/deluge/ui/data/pixmaps/flags/vg.png Binary files differindex d9f04d6f7..3ece564ae 100644 --- a/deluge/ui/data/pixmaps/flags/vg.png +++ b/deluge/ui/data/pixmaps/flags/vg.png diff --git a/deluge/ui/data/pixmaps/flags/vi.png b/deluge/ui/data/pixmaps/flags/vi.png Binary files differindex 2b887b30f..54d5c0e90 100644 --- a/deluge/ui/data/pixmaps/flags/vi.png +++ b/deluge/ui/data/pixmaps/flags/vi.png diff --git a/deluge/ui/data/pixmaps/flags/vn.png b/deluge/ui/data/pixmaps/flags/vn.png Binary files differindex 335e9fc8e..8a6970349 100644 --- a/deluge/ui/data/pixmaps/flags/vn.png +++ b/deluge/ui/data/pixmaps/flags/vn.png diff --git a/deluge/ui/data/pixmaps/flags/vu.png b/deluge/ui/data/pixmaps/flags/vu.png Binary files differindex f3fa6e62b..2794923a6 100644 --- a/deluge/ui/data/pixmaps/flags/vu.png +++ b/deluge/ui/data/pixmaps/flags/vu.png diff --git a/deluge/ui/data/pixmaps/flags/wf.png b/deluge/ui/data/pixmaps/flags/wf.png Binary files differindex 1d6460edb..574d08ac5 100644 --- a/deluge/ui/data/pixmaps/flags/wf.png +++ b/deluge/ui/data/pixmaps/flags/wf.png diff --git a/deluge/ui/data/pixmaps/flags/ws.png b/deluge/ui/data/pixmaps/flags/ws.png Binary files differindex 628f38793..6339a173e 100644 --- a/deluge/ui/data/pixmaps/flags/ws.png +++ b/deluge/ui/data/pixmaps/flags/ws.png diff --git a/deluge/ui/data/pixmaps/flags/ye.png b/deluge/ui/data/pixmaps/flags/ye.png Binary files differindex b3f760b7b..c9187dd99 100644 --- a/deluge/ui/data/pixmaps/flags/ye.png +++ b/deluge/ui/data/pixmaps/flags/ye.png diff --git a/deluge/ui/data/pixmaps/flags/yt.png b/deluge/ui/data/pixmaps/flags/yt.png Binary files differindex d0c5a2c88..41ef4a7f3 100644 --- a/deluge/ui/data/pixmaps/flags/yt.png +++ b/deluge/ui/data/pixmaps/flags/yt.png diff --git a/deluge/ui/data/pixmaps/flags/yu.png b/deluge/ui/data/pixmaps/flags/yu.png Binary files differindex 4827aec2d..18fbde63f 100644 --- a/deluge/ui/data/pixmaps/flags/yu.png +++ b/deluge/ui/data/pixmaps/flags/yu.png diff --git a/deluge/ui/data/pixmaps/flags/za.png b/deluge/ui/data/pixmaps/flags/za.png Binary files differindex 53ba7e1dd..04146b599 100644 --- a/deluge/ui/data/pixmaps/flags/za.png +++ b/deluge/ui/data/pixmaps/flags/za.png diff --git a/deluge/ui/data/pixmaps/flags/zm.png b/deluge/ui/data/pixmaps/flags/zm.png Binary files differindex 2911ca7ce..363b4dfbc 100644 --- a/deluge/ui/data/pixmaps/flags/zm.png +++ b/deluge/ui/data/pixmaps/flags/zm.png diff --git a/deluge/ui/data/pixmaps/flags/zw.png b/deluge/ui/data/pixmaps/flags/zw.png Binary files differindex 9c065013a..030b1474b 100644 --- a/deluge/ui/data/pixmaps/flags/zw.png +++ b/deluge/ui/data/pixmaps/flags/zw.png diff --git a/deluge/ui/data/pixmaps/inactive16.png b/deluge/ui/data/pixmaps/inactive16.png Binary files differindex cae8b2c0a..e434dad9f 100644 --- a/deluge/ui/data/pixmaps/inactive16.png +++ b/deluge/ui/data/pixmaps/inactive16.png diff --git a/deluge/ui/data/pixmaps/magnet16.png b/deluge/ui/data/pixmaps/magnet16.png Binary files differindex 61d6dabb7..6fc25ed69 100644 --- a/deluge/ui/data/pixmaps/magnet16.png +++ b/deluge/ui/data/pixmaps/magnet16.png diff --git a/deluge/ui/data/pixmaps/magnet_add16.png b/deluge/ui/data/pixmaps/magnet_add16.png Binary files differindex 37c1c36b0..f6010f54a 100644 --- a/deluge/ui/data/pixmaps/magnet_add16.png +++ b/deluge/ui/data/pixmaps/magnet_add16.png diff --git a/deluge/ui/data/pixmaps/magnet_copy16.png b/deluge/ui/data/pixmaps/magnet_copy16.png Binary files differindex a4be9d218..9b4ec6bbf 100644 --- a/deluge/ui/data/pixmaps/magnet_copy16.png +++ b/deluge/ui/data/pixmaps/magnet_copy16.png diff --git a/deluge/ui/data/pixmaps/queued16.png b/deluge/ui/data/pixmaps/queued16.png Binary files differindex f9f74540f..74db4c5eb 100644 --- a/deluge/ui/data/pixmaps/queued16.png +++ b/deluge/ui/data/pixmaps/queued16.png diff --git a/deluge/ui/data/pixmaps/seeding16.png b/deluge/ui/data/pixmaps/seeding16.png Binary files differindex fce70a8d9..2d9dc58f7 100644 --- a/deluge/ui/data/pixmaps/seeding16.png +++ b/deluge/ui/data/pixmaps/seeding16.png diff --git a/deluge/ui/data/pixmaps/tracker_all16.png b/deluge/ui/data/pixmaps/tracker_all16.png Binary files differindex 36756bbcc..10a8f9832 100644 --- a/deluge/ui/data/pixmaps/tracker_all16.png +++ b/deluge/ui/data/pixmaps/tracker_all16.png diff --git a/deluge/ui/data/pixmaps/tracker_warning16.png b/deluge/ui/data/pixmaps/tracker_warning16.png Binary files differindex 219432c44..7c29972a3 100644 --- a/deluge/ui/data/pixmaps/tracker_warning16.png +++ b/deluge/ui/data/pixmaps/tracker_warning16.png diff --git a/deluge/ui/data/pixmaps/traffic16.png b/deluge/ui/data/pixmaps/traffic16.png Binary files differindex ecd87204d..b4ce5ea14 100644 --- a/deluge/ui/data/pixmaps/traffic16.png +++ b/deluge/ui/data/pixmaps/traffic16.png diff --git a/deluge/ui/data/share/appdata/deluge.appdata.xml.in b/deluge/ui/data/share/metainfo/deluge.metainfo.xml.in index dcbf0630c..dcbf0630c 100644 --- a/deluge/ui/data/share/appdata/deluge.appdata.xml.in +++ b/deluge/ui/data/share/metainfo/deluge.metainfo.xml.in diff --git a/deluge/ui/gtk3/__init__.py b/deluge/ui/gtk3/__init__.py index 8db2773e4..d1b4ec53f 100644 --- a/deluge/ui/gtk3/__init__.py +++ b/deluge/ui/gtk3/__init__.py @@ -18,7 +18,6 @@ environ['PYGAME_HIDE_SUPPORT_PROMPT'] = '1' # Keep this class in __init__.py to avoid the console having to import everything in gtkui.py class Gtk(UI): - cmd_description = """GTK-based graphical user interface""" def __init__(self, *args, **kwargs): diff --git a/deluge/ui/gtk3/addtorrentdialog.py b/deluge/ui/gtk3/addtorrentdialog.py index cf3851d6c..aa71cc434 100644 --- a/deluge/ui/gtk3/addtorrentdialog.py +++ b/deluge/ui/gtk3/addtorrentdialog.py @@ -379,7 +379,7 @@ class AddTorrentDialog(component.Component): self.listview_files.expand_row(root, False) def prepare_file(self, _file, file_name, file_num, download, files_storage): - first_slash_index = file_name.find(os.path.sep) + first_slash_index = file_name.find('/') if first_slash_index == -1: files_storage[file_name] = (file_num, _file, download) else: @@ -397,7 +397,7 @@ class AddTorrentDialog(component.Component): def add_files(self, parent_iter, split_files): ret = 0 for key, value in split_files.items(): - if key.endswith(os.path.sep): + if key.endswith('/'): chunk_iter = self.files_treestore.append( parent_iter, [True, key, 0, -1, False, 'folder-symbolic'] ) @@ -584,7 +584,7 @@ class AddTorrentDialog(component.Component): self.build_priorities( self.files_treestore.iter_children(_iter), priorities ) - elif not self.files_treestore.get_value(_iter, 1).endswith(os.path.sep): + elif not self.files_treestore.get_value(_iter, 1).endswith('/'): priorities[ self.files_treestore.get_value(_iter, 3) ] = self.files_treestore.get_value(_iter, 0) @@ -985,7 +985,10 @@ class AddTorrentDialog(component.Component): def _on_filename_edited(self, renderer, path, new_text): index = self.files_treestore[path][3] - new_text = new_text.strip(os.path.sep).strip() + # Ensure agnostic path separator + new_text = new_text.replace('\\', '/') + + new_text = new_text.strip('/').strip() # Return if the text hasn't changed if new_text == self.files_treestore[path][1]: @@ -1012,10 +1015,10 @@ class AddTorrentDialog(component.Component): for row in self.files_treestore[parent].iterchildren(): if new_text == row[1]: return - if os.path.sep in new_text: + if '/' in new_text: # There are folders in this path, so we need to create them # and then move the file iter to top - split_text = new_text.split(os.path.sep) + split_text = new_text.split('/') for s in split_text[:-1]: parent = self.files_treestore.append( parent, [True, s, 0, -1, False, 'folder-symbolic'] @@ -1068,19 +1071,19 @@ class AddTorrentDialog(component.Component): # we can construct the new proper paths # We need to check if this folder has been split - if os.path.sep in new_text: + if '/' in new_text: # It's been split, so we need to add new folders and then re-parent # itr. parent = self.files_treestore.iter_parent(itr) - split_text = new_text.split(os.path.sep) + split_text = new_text.split('/') for s in split_text[:-1]: # We don't iterate over the last item because we'll just use # the existing itr and change the text parent = self.files_treestore.append( - parent, [True, s + os.path.sep, 0, -1, False, 'folder-symbolic'] + parent, [True, s + '/', 0, -1, False, 'folder-symbolic'] ) - self.files_treestore[itr][1] = split_text[-1] + os.path.sep + self.files_treestore[itr][1] = split_text[-1] + '/' # Now re-parent itr to parent reparent_iter(self.files_treestore, itr, parent) @@ -1093,7 +1096,7 @@ class AddTorrentDialog(component.Component): else: # This was a simple folder rename without any splits, so just # change the path for itr - self.files_treestore[itr][1] = new_text + os.path.sep + self.files_treestore[itr][1] = new_text + '/' # Walk through the tree from 'itr' and add all the new file paths # to the 'mapped_files' option diff --git a/deluge/ui/gtk3/files_tab.py b/deluge/ui/gtk3/files_tab.py index 24c169727..6e0fba417 100644 --- a/deluge/ui/gtk3/files_tab.py +++ b/deluge/ui/gtk3/files_tab.py @@ -245,7 +245,7 @@ class FilesTab(Tab): if state['sort_id'] is not None and state['sort_order'] is not None: self.treestore.set_sort_column_id(state['sort_id'], state['sort_order']) - for (index, column) in enumerate(self.listview.get_columns()): + for index, column in enumerate(self.listview.get_columns()): cname = column.get_title() if cname in state['columns']: cstate = state['columns'][cname] @@ -759,7 +759,6 @@ class FilesTab(Tab): fd['path'] = fd['path'].replace(old_folder, new_folder, 1) if torrent_id == self.torrent_id: - old_split = old_folder.split('/') try: old_split.remove('') diff --git a/deluge/ui/gtk3/glade/add_torrent_dialog.ui b/deluge/ui/gtk3/glade/add_torrent_dialog.ui index 7183272e1..b0f507d9e 100644 --- a/deluge/ui/gtk3/glade/add_torrent_dialog.ui +++ b/deluge/ui/gtk3/glade/add_torrent_dialog.ui @@ -4,13 +4,13 @@ <requires lib="gtk+" version="3.0"/> <object class="GtkAdjustment" id="adjustment1"> <property name="lower">-1</property> - <property name="upper">9999</property> + <property name="upper">2097151</property> <property name="step_increment">1</property> <property name="page_increment">10</property> </object> <object class="GtkAdjustment" id="adjustment2"> <property name="lower">-1</property> - <property name="upper">9999</property> + <property name="upper">2097151</property> <property name="step_increment">1</property> <property name="page_increment">10</property> </object> diff --git a/deluge/ui/gtk3/glade/main_window.ui b/deluge/ui/gtk3/glade/main_window.ui index ecbb8f61c..e7267560c 100644 --- a/deluge/ui/gtk3/glade/main_window.ui +++ b/deluge/ui/gtk3/glade/main_window.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.22.1 --> +<!-- Generated with glade 3.22.2 --> <interface> <requires lib="gtk+" version="3.0"/> <object class="GtkImage" id="about-image"> @@ -7,7 +7,6 @@ <property name="can_focus">False</property> <property name="icon_name">help-about-symbolic</property> </object> - <object class="GtkAccelGroup" id="accelgroup1"/> <object class="GtkImage" id="add-image"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -67,6 +66,7 @@ <property name="icon_name">zoom-fit-best-symbolic</property> <property name="icon_size">1</property> </object> + <object class="GtkAccelGroup" id="main_accelgroup"/> <object class="GtkImage" id="new-image"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -93,9 +93,9 @@ <property name="can_focus">False</property> <property name="title">Deluge</property> <accel-groups> - <group name="accelgroup1"/> + <group name="main_accelgroup"/> </accel-groups> - <child> + <child type="titlebar"> <placeholder/> </child> <child> @@ -114,8 +114,10 @@ <property name="label" translatable="yes">_File</property> <property name="use_underline">True</property> <child type="submenu"> - <object class="GtkMenu" id="menuitem1_menu1"> + <object class="GtkMenu" id="submenu_file"> <property name="can_focus">False</property> + <property name="accel_group">main_accelgroup</property> + <property name="accel_path"><Deluge-MainWindow>/File</property> <child> <object class="GtkImageMenuItem" id="menuitem_addtorrent"> <property name="label" translatable="yes">_Add Torrent</property> @@ -126,7 +128,6 @@ <property name="image">add-image</property> <property name="use_stock">False</property> <signal name="activate" handler="on_menuitem_addtorrent_activate" swapped="no"/> - <accelerator key="O" signal="activate" modifiers="GDK_CONTROL_MASK"/> </object> </child> <child> @@ -138,7 +139,6 @@ <property name="image">new-image</property> <property name="use_stock">False</property> <signal name="activate" handler="on_menuitem_createtorrent_activate" swapped="no"/> - <accelerator key="N" signal="activate" modifiers="GDK_CONTROL_MASK"/> </object> </child> <child> @@ -155,7 +155,6 @@ <property name="use_stock">False</property> <property name="always_show_image">True</property> <signal name="activate" handler="on_menuitem_quitdaemon_activate" swapped="no"/> - <accelerator key="Q" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/> </object> </child> <child> @@ -172,9 +171,8 @@ <property name="use_underline">True</property> <property name="image">quit_image</property> <property name="use_stock">False</property> - <property name="accel_group">accelgroup1</property> + <property name="accel_group">main_accelgroup</property> <signal name="activate" handler="on_menuitem_quit_activate" swapped="no"/> - <accelerator key="Q" signal="activate" modifiers="GDK_CONTROL_MASK"/> </object> </child> </object> @@ -188,9 +186,11 @@ <property name="label" translatable="yes">_Edit</property> <property name="use_underline">True</property> <child type="submenu"> - <object class="GtkMenu" id="menu1"> + <object class="GtkMenu" id="submenu_edit"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="accel_group">main_accelgroup</property> + <property name="accel_path"><Deluge-MainWindow>/Edit</property> <child> <object class="GtkImageMenuItem" id="menuitem_preferences"> <property name="label" translatable="yes">_Preferences</property> @@ -199,9 +199,8 @@ <property name="use_underline">True</property> <property name="image">prefs-image</property> <property name="use_stock">False</property> - <property name="accel_group">accelgroup1</property> + <property name="accel_group">main_accelgroup</property> <signal name="activate" handler="on_menuitem_preferences_activate" swapped="no"/> - <accelerator key="P" signal="activate" modifiers="GDK_CONTROL_MASK"/> </object> </child> <child> @@ -213,7 +212,6 @@ <property name="image">connection-image</property> <property name="use_stock">False</property> <signal name="activate" handler="on_menuitem_connectionmanager_activate" swapped="no"/> - <accelerator key="M" signal="activate" modifiers="GDK_CONTROL_MASK"/> </object> </child> </object> @@ -223,6 +221,7 @@ <child> <object class="GtkMenuItem" id="menu_torrent"> <property name="can_focus">False</property> + <property name="accel_path"><MainWindow>/Torrent</property> <property name="label" translatable="yes">_Torrent</property> <property name="use_underline">True</property> </object> @@ -234,9 +233,11 @@ <property name="label" translatable="yes">_View</property> <property name="use_underline">True</property> <child type="submenu"> - <object class="GtkMenu" id="menu2"> + <object class="GtkMenu" id="submenu_view"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="accel_group">main_accelgroup</property> + <property name="accel_path"><Deluge-MainWindow>/View</property> <child> <object class="GtkCheckMenuItem" id="menuitem_toolbar"> <property name="visible">True</property> @@ -297,7 +298,6 @@ <property name="label" translatable="yes">_Find ...</property> <property name="use_underline">True</property> <signal name="activate" handler="on_search_filter_toggle" swapped="no"/> - <accelerator key="f" signal="activate" modifiers="GDK_CONTROL_MASK"/> </object> </child> <child> @@ -356,8 +356,10 @@ <property name="label" translatable="yes">_Help</property> <property name="use_underline">True</property> <child type="submenu"> - <object class="GtkMenu" id="menuitem2_menu1"> + <object class="GtkMenu" id="submenu_help"> <property name="can_focus">False</property> + <property name="accel_group">main_accelgroup</property> + <property name="accel_path"><Deluge-MainWindow>/Help</property> <child> <object class="GtkImageMenuItem" id="menuitem_homepage"> <property name="label" translatable="yes">_Homepage</property> @@ -377,7 +379,6 @@ <property name="use_underline">True</property> <property name="use_stock">False</property> <signal name="activate" handler="on_menuitem_faq_activate" swapped="no"/> - <accelerator key="F1" signal="activate"/> </object> </child> <child> @@ -405,7 +406,7 @@ <property name="use_underline">True</property> <property name="image">about-image</property> <property name="use_stock">False</property> - <property name="accel_group">accelgroup1</property> + <property name="accel_group">main_accelgroup</property> <signal name="activate" handler="on_menuitem_about_activate" swapped="no"/> </object> </child> @@ -467,7 +468,6 @@ This will filter torrents for the current selection on the sidebar.</property> <property name="label" translatable="yes">Filter</property> <property name="icon_name">system-search-symbolic</property> <signal name="clicked" handler="on_search_filter_toggle" swapped="no"/> - <accelerator key="f" signal="clicked" modifiers="GDK_CONTROL_MASK"/> </object> <packing> <property name="expand">False</property> diff --git a/deluge/ui/gtk3/glade/preferences_dialog.ui b/deluge/ui/gtk3/glade/preferences_dialog.ui index aa1531d75..720dc6b40 100644 --- a/deluge/ui/gtk3/glade/preferences_dialog.ui +++ b/deluge/ui/gtk3/glade/preferences_dialog.ui @@ -736,7 +736,7 @@ and daemon (does not apply in Standalone mode).</property> <property name="expand">False</property> <property name="fill">False</property> <property name="padding">5</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> <child> @@ -968,6 +968,48 @@ and daemon (does not apply in Standalone mode).</property> </packing> </child> <child> + <object class="GtkFrame" id="frame_theme"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label-xalign">0</property> + <property name="shadow-type">none</property> + <child> + <object class="GtkAlignment" id="alignment_theme"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="top-padding">3</property> + <property name="left-padding">10</property> + <child> + <object class="GtkCheckButton" id="chk_prefer_dark_theme"> + <property name="label" translatable="yes">Prefer Dark</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">False</property> + <property name="tooltip_text" translatable="yes">If available, use dark variant of GTK theme.</property> + <property name="draw-indicator">True</property> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label_theme"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes">Theme</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">5</property> + <property name="position">3</property> + </packing> + </child> + <child> <object class="GtkFrame" id="frame19"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -1024,7 +1066,7 @@ and daemon (does not apply in Standalone mode).</property> <property name="expand">False</property> <property name="fill">False</property> <property name="padding">5</property> - <property name="position">3</property> + <property name="position">4</property> </packing> </child> <child> @@ -1101,7 +1143,7 @@ and daemon (does not apply in Standalone mode).</property> <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">4</property> + <property name="position">5</property> </packing> </child> </object> diff --git a/deluge/ui/gtk3/gtkui.py b/deluge/ui/gtk3/gtkui.py index ddb2eb529..73a7c97ae 100644 --- a/deluge/ui/gtk3/gtkui.py +++ b/deluge/ui/gtk3/gtkui.py @@ -84,12 +84,13 @@ except ImportError: DEFAULT_PREFS = { 'standalone': True, + 'prefer_dark_theme': False, 'interactive_add': True, 'focus_add_dialog': True, 'enable_system_tray': True, 'close_to_tray': False, 'start_in_tray': False, - 'enable_appindicator': False, + 'enable_appindicator': True, 'lock_tray': False, 'tray_password': '', 'check_new_releases': True, diff --git a/deluge/ui/gtk3/listview.py b/deluge/ui/gtk3/listview.py index e9f6b1084..a80d79507 100644 --- a/deluge/ui/gtk3/listview.py +++ b/deluge/ui/gtk3/listview.py @@ -72,7 +72,7 @@ class ListView: """ __gsignals__ = { - 'button-press-event': (GObject.SIGNAL_RUN_LAST, None, (object,)) + 'button-press-event': (GObject.SignalFlags.RUN_LAST, None, (object,)) } def __init__(self, title=None, cell_renderer=None, **args): diff --git a/deluge/ui/gtk3/mainwindow.py b/deluge/ui/gtk3/mainwindow.py index d11ff317a..6c871d2d8 100644 --- a/deluge/ui/gtk3/mainwindow.py +++ b/deluge/ui/gtk3/mainwindow.py @@ -44,7 +44,6 @@ log = logging.getLogger(__name__) class _GtkBuilderSignalsHolder: def connect_signals(self, mapping_or_class): - if isinstance(mapping_or_class, dict): for name, handler in mapping_or_class.items(): if hasattr(self, name): @@ -73,6 +72,12 @@ class MainWindow(component.Component): self.config = ConfigManager('gtk3ui.conf') self.main_builder = Gtk.Builder() + # Set theme + Gtk.Settings.get_default().set_property( + 'gtk-application-prefer-dark-theme', + self.config['prefer_dark_theme'], + ) + # Patch this GtkBuilder to avoid connecting signals from elsewhere # # Think about splitting up mainwindow gtkbuilder file into the necessary parts diff --git a/deluge/ui/gtk3/menubar.py b/deluge/ui/gtk3/menubar.py index a812a8cac..9165320fe 100644 --- a/deluge/ui/gtk3/menubar.py +++ b/deluge/ui/gtk3/menubar.py @@ -23,6 +23,17 @@ from .path_chooser import PathChooser log = logging.getLogger(__name__) +default_main_window_accelmap = { + '<Deluge-MainWindow>/File/Add Torrent': '<Primary>o', + '<Deluge-MainWindow>/File/Create Torrent': '<Primary>n', + '<Deluge-MainWindow>/File/Quit & Shutdown Daemon': '<Primary><Shift>q', + '<Deluge-MainWindow>/File/Quit': '<Primary>q', + '<Deluge-MainWindow>/Edit/Preferences': '<Primary>p', + '<Deluge-MainWindow>/Edit/Connection Manager': '<Primary>m', + '<Deluge-MainWindow>/View/Find ...': '<Primary>f', + '<Deluge-MainWindow>/Help/FAQ': 'F1', +} + class MenuBar(component.Component): def __init__(self): @@ -112,6 +123,11 @@ class MenuBar(component.Component): # Attach the torrent_menu to the Torrent file menu self.menu_torrent.set_submenu(self.torrentmenu) + # Set keyboard shortcuts + for accel_path, accelerator in default_main_window_accelmap.items(): + accel_key, accel_mods = Gtk.accelerator_parse(accelerator) + Gtk.AccelMap.change_entry(accel_path, accel_key, accel_mods, True) + # Make sure the view menuitems are showing the correct active state self.main_builder.get_object('menuitem_toolbar').set_active( self.config['show_toolbar'] @@ -562,42 +578,26 @@ class MenuBar(component.Component): component.get('FilterTreeView').update() def _on_known_accounts(self, known_accounts): - known_accounts_to_log = [] - for account in known_accounts: - account_to_log = {} - for key, value in account.copy().items(): - if key == 'password': - value = '*' * 10 - account_to_log[key] = value - known_accounts_to_log.append(account_to_log) - log.debug('_on_known_accounts: %s', known_accounts_to_log) + menuitem_change_owner = self.builder.get_object('menuitem_change_owner') if len(known_accounts) <= 1: + menuitem_change_owner.set_visible(False) return - self.builder.get_object('menuitem_change_owner').set_visible(True) - - self.change_owner_submenu = Gtk.Menu() - self.change_owner_submenu_items = {} - maingroup = Gtk.RadioMenuItem() - - self.change_owner_submenu_items[None] = Gtk.RadioMenuItem(maingroup) + self.users_menu = Gtk.Menu() + self.users_menu_items = {} + menu_group = None for account in known_accounts: username = account['username'] - item = Gtk.RadioMenuItem.new_with_label(maingroup, username) - self.change_owner_submenu_items[username] = item - self.change_owner_submenu.append(item) + item = Gtk.RadioMenuItem.new_with_label(menu_group, username) + menu_group = item.get_group() item.connect('toggled', self._on_change_owner_toggled, username) + self.users_menu_items[username] = item + self.users_menu.append(item) - self.change_owner_submenu.show_all() - self.change_owner_submenu_items[None].set_active(True) - self.change_owner_submenu_items[None].hide() - self.builder.get_object('menuitem_change_owner').connect( - 'activate', self._on_change_owner_submenu_active - ) - self.builder.get_object('menuitem_change_owner').set_submenu( - self.change_owner_submenu - ) + self.users_menu.show_all() + menuitem_change_owner.set_submenu(self.users_menu) + menuitem_change_owner.set_visible(True) def _on_known_accounts_fail(self, reason): self.builder.get_object('menuitem_change_owner').set_visible(False) @@ -606,13 +606,13 @@ class MenuBar(component.Component): log.debug('_on_change_owner_submenu_active') selected = component.get('TorrentView').get_selected_torrents() if len(selected) > 1: - self.change_owner_submenu_items[None].set_active(True) + self.users_menu_items[None].set_active(True) return torrent_owner = component.get('TorrentView').get_torrent_status(selected[0])[ 'owner' ] - for username, item in self.change_owner_submenu_items.items(): + for username, item in self.users_menu_items.items(): item.set_active(username == torrent_owner) def _on_change_owner_toggled(self, widget, username): diff --git a/deluge/ui/gtk3/menubar_osx.py b/deluge/ui/gtk3/menubar_osx.py index 53150fbf3..7f846dc72 100644 --- a/deluge/ui/gtk3/menubar_osx.py +++ b/deluge/ui/gtk3/menubar_osx.py @@ -5,48 +5,36 @@ # the additional special exception to link portions of this program with the OpenSSL library. # See LICENSE for more details. # - -from gi.repository.Gdk import ModifierType -from gi.repository.Gtk import SeparatorMenuItem, accel_groups_from_object -from gi.repository.Gtk.AccelFlags import VISIBLE +from gi.repository import Gtk from deluge.configmanager import ConfigManager - -def accel_swap(item, group, skey, smod, dkey, dmod): - # Accel map hack broken, see ticket #3078 - # item.remove_accelerator(group, ord(skey), smod) - item.add_accelerator('activate', group, ord(dkey), dmod, VISIBLE) - - -def accel_meta(item, group, key): - accel_swap(item, group, key, ModifierType.CONTROL_MASK, key, ModifierType.META_MASK) +macos_main_window_accelmap = { + '<Deluge-MainWindow>/File/Add Torrent': '<Meta>o', + '<Deluge-MainWindow>/File/Create Torrent': '<Meta>n', + '<Deluge-MainWindow>/File/Quit & Shutdown Daemon': '<Meta><Shift>q', + '<Deluge-MainWindow>/File/Quit': '<Meta>q', + '<Deluge-MainWindow>/Edit/Preferences': '<Meta>comma', + '<Deluge-MainWindow>/Edit/Connection Manager': '<Meta>m', + '<Deluge-MainWindow>/View/Find ...': '<Meta>f', + '<Deluge-MainWindow>/Help/FAQ': '<Meta>question', +} def menubar_osx(gtkui, osxapp): + # Change key shortcuts + for accel_path, accelerator in macos_main_window_accelmap.items(): + accel_key, accel_mods = Gtk.accelerator_parse(accelerator) + Gtk.AccelMap.change_entry(accel_path, accel_key, accel_mods, True) + main_builder = gtkui.mainwindow.get_builder() menubar = main_builder.get_object('menubar') - group = accel_groups_from_object(gtkui.mainwindow.window)[0] config = ConfigManager('gtk3ui.conf') - - # NOTE: accel maps doesn't work with glade file format - # because of libglade not setting MenuItem accel groups - # That's why we remove / set accelerators by hand... (dirty) - # Clean solution: migrate glades files to gtkbuilder format file_menu = main_builder.get_object('menu_file').get_submenu() file_items = file_menu.get_children() - accel_meta(file_items[0], group, 'o') - accel_meta(file_items[1], group, 'n') quit_all_item = file_items[3] - accel_swap( - quit_all_item, - group, - 'q', - ModifierType.SHIFT_MASK | ModifierType.CONTROL_MASK, - 'q', - ModifierType.SHIFT_MASK | ModifierType.META_MASK, - ) + for item in range(2, len(file_items)): # remove quits file_menu.remove(file_items[item]) @@ -54,13 +42,9 @@ def menubar_osx(gtkui, osxapp): edit_menu = menu_widget.get_submenu() edit_items = edit_menu.get_children() pref_item = edit_items[0] - accel_swap( - pref_item, group, 'p', ModifierType.CONTROL_MASK, ',', ModifierType.META_MASK - ) edit_menu.remove(pref_item) conn_item = edit_items[1] - accel_meta(conn_item, group, 'm') edit_menu.remove(conn_item) menubar.remove(menu_widget) @@ -75,10 +59,10 @@ def menubar_osx(gtkui, osxapp): osxapp.set_menu_bar(menubar) # populate app menu osxapp.insert_app_menu_item(about_item, 0) - osxapp.insert_app_menu_item(SeparatorMenuItem(), 1) + osxapp.insert_app_menu_item(Gtk.SeparatorMenuItem(), 1) osxapp.insert_app_menu_item(pref_item, 2) if not config['standalone']: osxapp.insert_app_menu_item(conn_item, 3) if quit_all_item.get_visible(): - osxapp.insert_app_menu_item(SeparatorMenuItem(), 4) + osxapp.insert_app_menu_item(Gtk.SeparatorMenuItem(), 4) osxapp.insert_app_menu_item(quit_all_item, 5) diff --git a/deluge/ui/gtk3/path_combo_chooser.py b/deluge/ui/gtk3/path_combo_chooser.py index 74d9055b7..aeb4c7a9e 100755 --- a/deluge/ui/gtk3/path_combo_chooser.py +++ b/deluge/ui/gtk3/path_combo_chooser.py @@ -62,7 +62,6 @@ def path_without_trailing_path_sep(path): class ValueList: - paths_without_trailing_path_sep = False def get_values_count(self): @@ -1097,7 +1096,6 @@ class PathAutoCompleter: class PathChooserComboBox(Gtk.Box, StoredValuesPopup, GObject.GObject): - __gsignals__ = { signal: (SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (object,)) for signal in [ diff --git a/deluge/ui/gtk3/peers_tab.py b/deluge/ui/gtk3/peers_tab.py index b458f7a7d..5768fbe3c 100644 --- a/deluge/ui/gtk3/peers_tab.py +++ b/deluge/ui/gtk3/peers_tab.py @@ -186,7 +186,7 @@ class PeersTab(Tab): if state['sort_id'] and state['sort_order'] is not None: self.liststore.set_sort_column_id(state['sort_id'], state['sort_order']) - for (index, column) in enumerate(self.listview.get_columns()): + for index, column in enumerate(self.listview.get_columns()): cname = column.get_title() if cname in state['columns']: cstate = state['columns'][cname] diff --git a/deluge/ui/gtk3/piecesbar.py b/deluge/ui/gtk3/piecesbar.py index 8665328c0..a5bf86549 100644 --- a/deluge/ui/gtk3/piecesbar.py +++ b/deluge/ui/gtk3/piecesbar.py @@ -51,7 +51,6 @@ class PiecesBar(DrawingArea): self.text = self.prev_text = '' self.fraction = self.prev_fraction = 0 self.progress_overlay = self.text_overlay = self.pieces_overlay = None - self.cr = None self.connect('size-allocate', self.do_size_allocate_event) self.show() @@ -63,34 +62,30 @@ class PiecesBar(DrawingArea): self.height = size.height # Handle the draw by drawing - def do_draw(self, event): - # Create cairo context - self.cr = self.props.window.cairo_create() - self.cr.set_line_width(max(self.cr.device_to_user_distance(0.5, 0.5))) + def do_draw(self, ctx): + ctx.set_line_width(max(ctx.device_to_user_distance(0.5, 0.5))) # Restrict Cairo to the exposed area; avoid extra work - self.roundcorners_clipping() + self.roundcorners_clipping(ctx) - self.draw_pieces() - self.draw_progress_overlay() - self.write_text() - self.roundcorners_border() + self.draw_pieces(ctx) + self.draw_progress_overlay(ctx) + self.write_text(ctx) + self.roundcorners_border(ctx) # Drawn once, update width, height if self.resized(): self.prev_width = self.width self.prev_height = self.height - def roundcorners_clipping(self): - self.create_roundcorners_subpath(self.cr, 0, 0, self.width, self.height) - self.cr.clip() + def roundcorners_clipping(self, ctx): + self.create_roundcorners_subpath(ctx, 0, 0, self.width, self.height) + ctx.clip() - def roundcorners_border(self): - self.create_roundcorners_subpath( - self.cr, 0.5, 0.5, self.width - 1, self.height - 1 - ) - self.cr.set_source_rgba(0, 0, 0, 0.9) - self.cr.stroke() + def roundcorners_border(self, ctx): + self.create_roundcorners_subpath(ctx, 0.5, 0.5, self.width - 1, self.height - 1) + ctx.set_source_rgba(0, 0, 0, 0.9) + ctx.stroke() @staticmethod def create_roundcorners_subpath(ctx, x, y, width, height): @@ -106,11 +101,9 @@ class PiecesBar(DrawingArea): ctx.arc(x + radius, y + height - radius, radius, 90 * degrees, 180 * degrees) ctx.arc(x + radius, y + radius, radius, 180 * degrees, 270 * degrees) ctx.close_path() - return ctx - def draw_pieces(self): + def draw_pieces(self, ctx): if not self.num_pieces: - # Nothing to draw. return if ( @@ -122,7 +115,7 @@ class PiecesBar(DrawingArea): self.pieces_overlay = cairo.ImageSurface( cairo.FORMAT_ARGB32, self.width, self.height ) - ctx = cairo.Context(self.pieces_overlay) + pieces_ctx = cairo.Context(self.pieces_overlay) if self.pieces: pieces = self.pieces @@ -139,17 +132,16 @@ class PiecesBar(DrawingArea): for state in COLOR_STATES ] for state in pieces: - ctx.set_source_rgb(*pieces_colors[state]) - ctx.rectangle(start_pos, 0, piece_width, self.height) - ctx.fill() + pieces_ctx.set_source_rgb(*pieces_colors[state]) + pieces_ctx.rectangle(start_pos, 0, piece_width, self.height) + pieces_ctx.fill() start_pos += piece_width - self.cr.set_source_surface(self.pieces_overlay) - self.cr.paint() + ctx.set_source_surface(self.pieces_overlay) + ctx.paint() - def draw_progress_overlay(self): + def draw_progress_overlay(self, ctx): if not self.text: - # Nothing useful to draw, return now! return if ( @@ -161,16 +153,15 @@ class PiecesBar(DrawingArea): self.progress_overlay = cairo.ImageSurface( cairo.FORMAT_ARGB32, self.width, self.height ) - ctx = cairo.Context(self.progress_overlay) - ctx.set_source_rgba(0.1, 0.1, 0.1, 0.3) # Transparent - ctx.rectangle(0, 0, self.width * self.fraction, self.height) - ctx.fill() - self.cr.set_source_surface(self.progress_overlay) - self.cr.paint() - - def write_text(self): + progress_ctx = cairo.Context(self.progress_overlay) + progress_ctx.set_source_rgba(0.1, 0.1, 0.1, 0.3) # Transparent + progress_ctx.rectangle(0, 0, self.width * self.fraction, self.height) + progress_ctx.fill() + ctx.set_source_surface(self.progress_overlay) + ctx.paint() + + def write_text(self, ctx): if not self.text: - # Nothing useful to draw, return now! return if self.resized() or self.text != self.prev_text or self.text_overlay is None: @@ -178,8 +169,8 @@ class PiecesBar(DrawingArea): self.text_overlay = cairo.ImageSurface( cairo.FORMAT_ARGB32, self.width, self.height ) - ctx = cairo.Context(self.text_overlay) - pl = PangoCairo.create_layout(ctx) + text_ctx = cairo.Context(self.text_overlay) + pl = PangoCairo.create_layout(text_ctx) pl.set_font_description(self.text_font) pl.set_width(-1) # No text wrapping pl.set_text(self.text, -1) @@ -188,12 +179,14 @@ class PiecesBar(DrawingArea): text_height = plsize[1] // SCALE area_width_without_text = self.width - text_width area_height_without_text = self.height - text_height - ctx.move_to(area_width_without_text // 2, area_height_without_text // 2) - ctx.set_source_rgb(1, 1, 1) - PangoCairo.update_layout(ctx, pl) - PangoCairo.show_layout(ctx, pl) - self.cr.set_source_surface(self.text_overlay) - self.cr.paint() + text_ctx.move_to( + area_width_without_text // 2, area_height_without_text // 2 + ) + text_ctx.set_source_rgb(1, 1, 1) + PangoCairo.update_layout(text_ctx, pl) + PangoCairo.show_layout(text_ctx, pl) + ctx.set_source_surface(self.text_overlay) + ctx.paint() def resized(self): return self.prev_width != self.width or self.prev_height != self.height @@ -226,7 +219,6 @@ class PiecesBar(DrawingArea): self.text = self.prev_text = '' self.fraction = self.prev_fraction = 0 self.progress_overlay = self.text_overlay = self.pieces_overlay = None - self.cr = None self.update() def update(self): diff --git a/deluge/ui/gtk3/preferences.py b/deluge/ui/gtk3/preferences.py index a008a9562..cd67a5b09 100644 --- a/deluge/ui/gtk3/preferences.py +++ b/deluge/ui/gtk3/preferences.py @@ -13,7 +13,7 @@ from hashlib import sha1 as sha from urllib.parse import urlparse from gi import require_version -from gi.repository import Gtk +from gi.repository import GObject, Gtk from gi.repository.Gdk import Color import deluge.common @@ -30,8 +30,12 @@ from .dialogs import AccountDialog, ErrorDialog, InformationDialog, YesNoDialog from .path_chooser import PathChooser try: - require_version('AppIndicator3', '0.1') - from gi.repository import AppIndicator3 # noqa: F401 + try: + require_version('AyatanaAppIndicator3', '0.1') + from gi.repository import AyatanaAppIndicator3 # noqa: F401 + except (ValueError, ImportError): + require_version('AppIndicator3', '0.1') + from gi.repository import AppIndicator3 # noqa: F401 except (ImportError, ValueError): appindicator = False else: @@ -113,7 +117,6 @@ class Preferences(component.Component): # Setup accounts tab lisview self.accounts_levels_mapping = None - self.accounts_authlevel = self.builder.get_object('accounts_authlevel') self.accounts_liststore = Gtk.ListStore(str, str, str, int) self.accounts_liststore.set_sort_column_id( ACCOUNTS_USERNAME, Gtk.SortType.ASCENDING @@ -168,6 +171,14 @@ class Preferences(component.Component): # Radio buttons to choose between systray and appindicator self.builder.get_object('alignment_tray_type').set_visible(appindicator) + # Initialize a binding for dark theme + Gtk.Settings.get_default().bind_property( + 'gtk-application-prefer-dark-theme', + self.builder.get_object('chk_prefer_dark_theme'), + 'active', + GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE, + ) + from .gtkui import DEFAULT_PREFS self.COLOR_DEFAULTS = {} @@ -295,7 +306,7 @@ class Preferences(component.Component): 'Bandwidth'""" self.window_open = True if page is not None: - for (index, string, __) in self.liststore: + for index, string, __ in self.liststore: if page == string: self.treeview.get_selection().select_path(index) break @@ -554,6 +565,9 @@ class Preferences(component.Component): self.builder.get_object('radio_thinclient').set_active( not self.gtkui_config['standalone'] ) + self.builder.get_object('chk_prefer_dark_theme').set_active( + self.gtkui_config['prefer_dark_theme'] + ) self.builder.get_object('chk_show_rate_in_title').set_active( self.gtkui_config['show_rate_in_title'] ) @@ -738,6 +752,9 @@ class Preferences(component.Component): ).get_active() # Interface tab # + new_gtkui_config['prefer_dark_theme'] = self.builder.get_object( + 'chk_prefer_dark_theme' + ).get_active() new_gtkui_config['enable_system_tray'] = self.builder.get_object( 'chk_use_tray' ).get_active() @@ -1071,6 +1088,10 @@ class Preferences(component.Component): def on_button_cancel_clicked(self, data): log.debug('on_button_cancel_clicked') + Gtk.Settings.get_default().set_property( + 'gtk-application-prefer-dark-theme', + self.gtkui_config['prefer_dark_theme'], + ) self.hide() return True diff --git a/deluge/ui/gtk3/systemtray.py b/deluge/ui/gtk3/systemtray.py index f65fde590..5318cf2d5 100644 --- a/deluge/ui/gtk3/systemtray.py +++ b/deluge/ui/gtk3/systemtray.py @@ -144,7 +144,6 @@ class SystemTray(component.Component): def __start(self): if self.config['enable_system_tray']: - if self.config['standalone']: try: self.hide_widget_list.remove('menuitem_quitdaemon') diff --git a/deluge/ui/hostlist.py b/deluge/ui/hostlist.py index 0fc3eabd8..0dba1269e 100644 --- a/deluge/ui/hostlist.py +++ b/deluge/ui/hostlist.py @@ -50,6 +50,8 @@ def validate_host_info(hostname, port): if not isinstance(port, int): raise ValueError('Invalid port. Must be an integer') + if not 0 <= port <= 65535: + raise ValueError('Invalid port. Must be between 0-65535') def migrate_hostlist(old_filename, new_filename): diff --git a/deluge/ui/sessionproxy.py b/deluge/ui/sessionproxy.py index b50ba6c3d..6cb8550e6 100644 --- a/deluge/ui/sessionproxy.py +++ b/deluge/ui/sessionproxy.py @@ -190,6 +190,7 @@ class SessionProxy(component.Component): :rtype: dict """ + # Helper functions and callbacks --------------------------------------- def on_status(result, torrent_ids, keys): # Update the internal torrent status dict with the update values diff --git a/deluge/ui/web/docs/template/resources/deluge.png b/deluge/ui/web/docs/template/resources/deluge.png Binary files differindex e39cd0c7e..761f0601c 100644 --- a/deluge/ui/web/docs/template/resources/deluge.png +++ b/deluge/ui/web/docs/template/resources/deluge.png diff --git a/deluge/ui/web/docs/template/resources/form.png b/deluge/ui/web/docs/template/resources/form.png Binary files differindex f0945cf7f..ef32f38e7 100644 --- a/deluge/ui/web/docs/template/resources/form.png +++ b/deluge/ui/web/docs/template/resources/form.png diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.png b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.png Binary files differindex 8b81e7ff2..883059742 100644 --- a/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.png +++ b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.png diff --git a/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.png b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.png Binary files differindex 9dd5df34b..4ec318fd2 100644 --- a/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.png +++ b/deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.png diff --git a/deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.png b/deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.png Binary files differindex 578ffb609..27299d106 100644 --- a/deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.png +++ b/deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.png diff --git a/deluge/ui/web/docs/template/resources/images/default/shadow-c.png b/deluge/ui/web/docs/template/resources/images/default/shadow-c.png Binary files differindex d435f80ae..f66116ad3 100644 --- a/deluge/ui/web/docs/template/resources/images/default/shadow-c.png +++ b/deluge/ui/web/docs/template/resources/images/default/shadow-c.png diff --git a/deluge/ui/web/docs/template/resources/images/default/shadow-lr.png b/deluge/ui/web/docs/template/resources/images/default/shadow-lr.png Binary files differindex bb88b6f2b..2ed5f7a80 100644 --- a/deluge/ui/web/docs/template/resources/images/default/shadow-lr.png +++ b/deluge/ui/web/docs/template/resources/images/default/shadow-lr.png diff --git a/deluge/ui/web/docs/template/resources/images/default/shadow.png b/deluge/ui/web/docs/template/resources/images/default/shadow.png Binary files differindex 75c0eba3e..eddcd0b11 100644 --- a/deluge/ui/web/docs/template/resources/images/default/shadow.png +++ b/deluge/ui/web/docs/template/resources/images/default/shadow.png diff --git a/deluge/ui/web/docs/template/resources/images/default/slider/slider-bg.png b/deluge/ui/web/docs/template/resources/images/default/slider/slider-bg.png Binary files differindex 999919424..72c7d9ac9 100644 --- a/deluge/ui/web/docs/template/resources/images/default/slider/slider-bg.png +++ b/deluge/ui/web/docs/template/resources/images/default/slider/slider-bg.png diff --git a/deluge/ui/web/docs/template/resources/images/default/slider/slider-thumb.png b/deluge/ui/web/docs/template/resources/images/default/slider/slider-thumb.png Binary files differindex cd654a4c1..04792c55f 100644 --- a/deluge/ui/web/docs/template/resources/images/default/slider/slider-thumb.png +++ b/deluge/ui/web/docs/template/resources/images/default/slider/slider-thumb.png diff --git a/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-bg.png b/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-bg.png Binary files differindex 121450c28..bb01e9b22 100644 --- a/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-bg.png +++ b/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-bg.png diff --git a/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-thumb.png b/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-thumb.png Binary files differindex 7b3d7258a..4c7ebfcd5 100644 --- a/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-thumb.png +++ b/deluge/ui/web/docs/template/resources/images/default/slider/slider-v-thumb.png diff --git a/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.png b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.png Binary files differindex fa8ab3f46..9b3a23a54 100644 --- a/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.png +++ b/deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.png diff --git a/deluge/ui/web/docs/template/resources/images/default/window/left-corners.png b/deluge/ui/web/docs/template/resources/images/default/window/left-corners.png Binary files differindex 18e215de4..0d5f8a85c 100644 --- a/deluge/ui/web/docs/template/resources/images/default/window/left-corners.png +++ b/deluge/ui/web/docs/template/resources/images/default/window/left-corners.png diff --git a/deluge/ui/web/docs/template/resources/images/default/window/left-right.png b/deluge/ui/web/docs/template/resources/images/default/window/left-right.png Binary files differindex 97d04f304..9fea0e44b 100644 --- a/deluge/ui/web/docs/template/resources/images/default/window/left-right.png +++ b/deluge/ui/web/docs/template/resources/images/default/window/left-right.png diff --git a/deluge/ui/web/docs/template/resources/images/default/window/right-corners.png b/deluge/ui/web/docs/template/resources/images/default/window/right-corners.png Binary files differindex 101118b22..8f88f33f9 100644 --- a/deluge/ui/web/docs/template/resources/images/default/window/right-corners.png +++ b/deluge/ui/web/docs/template/resources/images/default/window/right-corners.png diff --git a/deluge/ui/web/docs/template/resources/images/default/window/top-bottom.png b/deluge/ui/web/docs/template/resources/images/default/window/top-bottom.png Binary files differindex a73923430..c6d63f683 100644 --- a/deluge/ui/web/docs/template/resources/images/default/window/top-bottom.png +++ b/deluge/ui/web/docs/template/resources/images/default/window/top-bottom.png diff --git a/deluge/ui/web/icons/active.png b/deluge/ui/web/icons/active.png Binary files differindex c9af82a5f..e5bab66cd 100644 --- a/deluge/ui/web/icons/active.png +++ b/deluge/ui/web/icons/active.png diff --git a/deluge/ui/web/icons/add.png b/deluge/ui/web/icons/add.png Binary files differindex 3bc06ca36..4b2c04743 100644 --- a/deluge/ui/web/icons/add.png +++ b/deluge/ui/web/icons/add.png diff --git a/deluge/ui/web/icons/add_file.png b/deluge/ui/web/icons/add_file.png Binary files differindex 6a057450f..80b41c813 100644 --- a/deluge/ui/web/icons/add_file.png +++ b/deluge/ui/web/icons/add_file.png diff --git a/deluge/ui/web/icons/add_url.png b/deluge/ui/web/icons/add_url.png Binary files differindex 74dc99f4d..3453f501a 100644 --- a/deluge/ui/web/icons/add_url.png +++ b/deluge/ui/web/icons/add_url.png diff --git a/deluge/ui/web/icons/alert.png b/deluge/ui/web/icons/alert.png Binary files differindex 703663813..49028db9c 100644 --- a/deluge/ui/web/icons/alert.png +++ b/deluge/ui/web/icons/alert.png diff --git a/deluge/ui/web/icons/all.png b/deluge/ui/web/icons/all.png Binary files differindex c63f8df1a..1a9ba9092 100644 --- a/deluge/ui/web/icons/all.png +++ b/deluge/ui/web/icons/all.png diff --git a/deluge/ui/web/icons/back.png b/deluge/ui/web/icons/back.png Binary files differindex fdcf9f060..cd955f590 100644 --- a/deluge/ui/web/icons/back.png +++ b/deluge/ui/web/icons/back.png diff --git a/deluge/ui/web/icons/bottom.png b/deluge/ui/web/icons/bottom.png Binary files differindex ca32c1f10..a57c743ba 100644 --- a/deluge/ui/web/icons/bottom.png +++ b/deluge/ui/web/icons/bottom.png diff --git a/deluge/ui/web/icons/checking.png b/deluge/ui/web/icons/checking.png Binary files differindex 6758e36e8..9961675c4 100644 --- a/deluge/ui/web/icons/checking.png +++ b/deluge/ui/web/icons/checking.png diff --git a/deluge/ui/web/icons/connection_manager.png b/deluge/ui/web/icons/connection_manager.png Binary files differindex a0333068f..f2f72c99a 100644 --- a/deluge/ui/web/icons/connection_manager.png +++ b/deluge/ui/web/icons/connection_manager.png diff --git a/deluge/ui/web/icons/connections.png b/deluge/ui/web/icons/connections.png Binary files differindex f0b660bd5..859df38d5 100644 --- a/deluge/ui/web/icons/connections.png +++ b/deluge/ui/web/icons/connections.png diff --git a/deluge/ui/web/icons/create.png b/deluge/ui/web/icons/create.png Binary files differindex 9008c98ac..375078c2a 100644 --- a/deluge/ui/web/icons/create.png +++ b/deluge/ui/web/icons/create.png diff --git a/deluge/ui/web/icons/deluge-192.png b/deluge/ui/web/icons/deluge-192.png Binary files differindex b49a31863..93c6feb44 100644 --- a/deluge/ui/web/icons/deluge-192.png +++ b/deluge/ui/web/icons/deluge-192.png diff --git a/deluge/ui/web/icons/deluge-32.png b/deluge/ui/web/icons/deluge-32.png Binary files differindex 6787fa39a..916f13632 100644 --- a/deluge/ui/web/icons/deluge-32.png +++ b/deluge/ui/web/icons/deluge-32.png diff --git a/deluge/ui/web/icons/deluge-512.png b/deluge/ui/web/icons/deluge-512.png Binary files differindex 866f6b939..464dd69f5 100644 --- a/deluge/ui/web/icons/deluge-512.png +++ b/deluge/ui/web/icons/deluge-512.png diff --git a/deluge/ui/web/icons/deluge-apple-180.png b/deluge/ui/web/icons/deluge-apple-180.png Binary files differindex 82f7be23f..527501fac 100644 --- a/deluge/ui/web/icons/deluge-apple-180.png +++ b/deluge/ui/web/icons/deluge-apple-180.png diff --git a/deluge/ui/web/icons/deluge.png b/deluge/ui/web/icons/deluge.png Binary files differindex 5afdbe4c6..1291dfaeb 100644 --- a/deluge/ui/web/icons/deluge.png +++ b/deluge/ui/web/icons/deluge.png diff --git a/deluge/ui/web/icons/dht.png b/deluge/ui/web/icons/dht.png Binary files differindex 363ee0c0f..2396bb132 100644 --- a/deluge/ui/web/icons/dht.png +++ b/deluge/ui/web/icons/dht.png diff --git a/deluge/ui/web/icons/document.png b/deluge/ui/web/icons/document.png Binary files differindex 5ee00182f..12b8b3e3a 100644 --- a/deluge/ui/web/icons/document.png +++ b/deluge/ui/web/icons/document.png diff --git a/deluge/ui/web/icons/down.png b/deluge/ui/web/icons/down.png Binary files differindex 68be2b311..3e81fbee8 100644 --- a/deluge/ui/web/icons/down.png +++ b/deluge/ui/web/icons/down.png diff --git a/deluge/ui/web/icons/downloading.png b/deluge/ui/web/icons/downloading.png Binary files differindex 24d6ffa38..e64aa5adc 100644 --- a/deluge/ui/web/icons/downloading.png +++ b/deluge/ui/web/icons/downloading.png diff --git a/deluge/ui/web/icons/drive.png b/deluge/ui/web/icons/drive.png Binary files differindex 6fd688eee..a358fa34e 100644 --- a/deluge/ui/web/icons/drive.png +++ b/deluge/ui/web/icons/drive.png diff --git a/deluge/ui/web/icons/edit_trackers.png b/deluge/ui/web/icons/edit_trackers.png Binary files differindex 80455ecc0..17f0d944d 100644 --- a/deluge/ui/web/icons/edit_trackers.png +++ b/deluge/ui/web/icons/edit_trackers.png diff --git a/deluge/ui/web/icons/error.png b/deluge/ui/web/icons/error.png Binary files differindex 20ad66a25..2ffb89fcc 100644 --- a/deluge/ui/web/icons/error.png +++ b/deluge/ui/web/icons/error.png diff --git a/deluge/ui/web/icons/expand_all.png b/deluge/ui/web/icons/expand_all.png Binary files differindex 050419f1c..013d55ad0 100644 --- a/deluge/ui/web/icons/expand_all.png +++ b/deluge/ui/web/icons/expand_all.png diff --git a/deluge/ui/web/icons/favicon.ico b/deluge/ui/web/icons/favicon.ico Binary files differindex 4e6f12436..176ca6688 100644 --- a/deluge/ui/web/icons/favicon.ico +++ b/deluge/ui/web/icons/favicon.ico diff --git a/deluge/ui/web/icons/find_more.png b/deluge/ui/web/icons/find_more.png Binary files differindex 199d73eae..e53a4ef57 100644 --- a/deluge/ui/web/icons/find_more.png +++ b/deluge/ui/web/icons/find_more.png diff --git a/deluge/ui/web/icons/forward.png b/deluge/ui/web/icons/forward.png Binary files differindex 2e5548996..95ee82203 100644 --- a/deluge/ui/web/icons/forward.png +++ b/deluge/ui/web/icons/forward.png diff --git a/deluge/ui/web/icons/help.png b/deluge/ui/web/icons/help.png Binary files differindex 0566ae067..e68c4586a 100644 --- a/deluge/ui/web/icons/help.png +++ b/deluge/ui/web/icons/help.png diff --git a/deluge/ui/web/icons/high.png b/deluge/ui/web/icons/high.png Binary files differindex 4b2b1ffac..6755979d6 100644 --- a/deluge/ui/web/icons/high.png +++ b/deluge/ui/web/icons/high.png diff --git a/deluge/ui/web/icons/home.png b/deluge/ui/web/icons/home.png Binary files differindex a319df64c..dda4941e9 100644 --- a/deluge/ui/web/icons/home.png +++ b/deluge/ui/web/icons/home.png diff --git a/deluge/ui/web/icons/inactive.png b/deluge/ui/web/icons/inactive.png Binary files differindex cae8b2c0a..e434dad9f 100644 --- a/deluge/ui/web/icons/inactive.png +++ b/deluge/ui/web/icons/inactive.png diff --git a/deluge/ui/web/icons/install_plugin.png b/deluge/ui/web/icons/install_plugin.png Binary files differindex aff31e77e..e50270478 100644 --- a/deluge/ui/web/icons/install_plugin.png +++ b/deluge/ui/web/icons/install_plugin.png diff --git a/deluge/ui/web/icons/login.png b/deluge/ui/web/icons/login.png Binary files differindex c06d0d119..ccc7ff3ad 100644 --- a/deluge/ui/web/icons/login.png +++ b/deluge/ui/web/icons/login.png diff --git a/deluge/ui/web/icons/logout.png b/deluge/ui/web/icons/logout.png Binary files differindex 2f53a65b4..1e9d5b83d 100644 --- a/deluge/ui/web/icons/logout.png +++ b/deluge/ui/web/icons/logout.png diff --git a/deluge/ui/web/icons/low.png b/deluge/ui/web/icons/low.png Binary files differindex ff669db7d..b9f1d2b04 100644 --- a/deluge/ui/web/icons/low.png +++ b/deluge/ui/web/icons/low.png diff --git a/deluge/ui/web/icons/magnet.png b/deluge/ui/web/icons/magnet.png Binary files differindex 61d6dabb7..6fc25ed69 100644 --- a/deluge/ui/web/icons/magnet.png +++ b/deluge/ui/web/icons/magnet.png diff --git a/deluge/ui/web/icons/magnet_add.png b/deluge/ui/web/icons/magnet_add.png Binary files differindex 37c1c36b0..f6010f54a 100644 --- a/deluge/ui/web/icons/magnet_add.png +++ b/deluge/ui/web/icons/magnet_add.png diff --git a/deluge/ui/web/icons/magnet_copy.png b/deluge/ui/web/icons/magnet_copy.png Binary files differindex a4be9d218..9b4ec6bbf 100644 --- a/deluge/ui/web/icons/magnet_copy.png +++ b/deluge/ui/web/icons/magnet_copy.png diff --git a/deluge/ui/web/icons/move.png b/deluge/ui/web/icons/move.png Binary files differindex ea83832c0..319cc166a 100644 --- a/deluge/ui/web/icons/move.png +++ b/deluge/ui/web/icons/move.png diff --git a/deluge/ui/web/icons/no_download.png b/deluge/ui/web/icons/no_download.png Binary files differindex 206d43660..e569b6a4f 100644 --- a/deluge/ui/web/icons/no_download.png +++ b/deluge/ui/web/icons/no_download.png diff --git a/deluge/ui/web/icons/normal.png b/deluge/ui/web/icons/normal.png Binary files differindex 2e5548996..95ee82203 100644 --- a/deluge/ui/web/icons/normal.png +++ b/deluge/ui/web/icons/normal.png diff --git a/deluge/ui/web/icons/ok.png b/deluge/ui/web/icons/ok.png Binary files differindex 33eb7db27..79195804c 100644 --- a/deluge/ui/web/icons/ok.png +++ b/deluge/ui/web/icons/ok.png diff --git a/deluge/ui/web/icons/pause.png b/deluge/ui/web/icons/pause.png Binary files differindex 8fdd6bc73..6e7b8c351 100644 --- a/deluge/ui/web/icons/pause.png +++ b/deluge/ui/web/icons/pause.png diff --git a/deluge/ui/web/icons/preferences.png b/deluge/ui/web/icons/preferences.png Binary files differindex 7d6deb246..e8e6a0666 100644 --- a/deluge/ui/web/icons/preferences.png +++ b/deluge/ui/web/icons/preferences.png diff --git a/deluge/ui/web/icons/queue.png b/deluge/ui/web/icons/queue.png Binary files differindex 3e4b4bee0..150ef8a43 100644 --- a/deluge/ui/web/icons/queue.png +++ b/deluge/ui/web/icons/queue.png diff --git a/deluge/ui/web/icons/queued.png b/deluge/ui/web/icons/queued.png Binary files differindex f9f74540f..74db4c5eb 100644 --- a/deluge/ui/web/icons/queued.png +++ b/deluge/ui/web/icons/queued.png diff --git a/deluge/ui/web/icons/recheck.png b/deluge/ui/web/icons/recheck.png Binary files differindex 199d73eae..e53a4ef57 100644 --- a/deluge/ui/web/icons/recheck.png +++ b/deluge/ui/web/icons/recheck.png diff --git a/deluge/ui/web/icons/remove.png b/deluge/ui/web/icons/remove.png Binary files differindex 3f911914d..70db1ca4e 100644 --- a/deluge/ui/web/icons/remove.png +++ b/deluge/ui/web/icons/remove.png diff --git a/deluge/ui/web/icons/seeding.png b/deluge/ui/web/icons/seeding.png Binary files differindex fce70a8d9..2d9dc58f7 100644 --- a/deluge/ui/web/icons/seeding.png +++ b/deluge/ui/web/icons/seeding.png diff --git a/deluge/ui/web/icons/start.png b/deluge/ui/web/icons/start.png Binary files differindex ff669db7d..b9f1d2b04 100644 --- a/deluge/ui/web/icons/start.png +++ b/deluge/ui/web/icons/start.png diff --git a/deluge/ui/web/icons/top.png b/deluge/ui/web/icons/top.png Binary files differindex 850656f3d..db9969d2b 100644 --- a/deluge/ui/web/icons/top.png +++ b/deluge/ui/web/icons/top.png diff --git a/deluge/ui/web/icons/traffic.png b/deluge/ui/web/icons/traffic.png Binary files differindex ecd87204d..b4ce5ea14 100644 --- a/deluge/ui/web/icons/traffic.png +++ b/deluge/ui/web/icons/traffic.png diff --git a/deluge/ui/web/icons/up.png b/deluge/ui/web/icons/up.png Binary files differindex 223e73326..9aa7c6437 100644 --- a/deluge/ui/web/icons/up.png +++ b/deluge/ui/web/icons/up.png diff --git a/deluge/ui/web/icons/update.png b/deluge/ui/web/icons/update.png Binary files differindex 0ff6d45a7..ee61b01e9 100644 --- a/deluge/ui/web/icons/update.png +++ b/deluge/ui/web/icons/update.png diff --git a/deluge/ui/web/icons/upload_slots.png b/deluge/ui/web/icons/upload_slots.png Binary files differindex 0e7000d81..294523eb5 100644 --- a/deluge/ui/web/icons/upload_slots.png +++ b/deluge/ui/web/icons/upload_slots.png diff --git a/deluge/ui/web/icons/warning.png b/deluge/ui/web/icons/warning.png Binary files differindex f66feda89..c81dc592f 100644 --- a/deluge/ui/web/icons/warning.png +++ b/deluge/ui/web/icons/warning.png diff --git a/deluge/ui/web/js/deluge-all/ConnectionManager.js b/deluge/ui/web/js/deluge-all/ConnectionManager.js index 5261726fb..2e61e22a2 100644 --- a/deluge/ui/web/js/deluge-all/ConnectionManager.js +++ b/deluge/ui/web/js/deluge-all/ConnectionManager.js @@ -162,13 +162,23 @@ Deluge.ConnectionManager = Ext.extend(Ext.Window, { }, update: function () { + this.updating = setTimeout(this.update, 2000); this.list.getStore().each(function (r) { deluge.client.web.get_host_status(r.id, { - success: this.onGetHostStatus, + success: this.onUpdate, scope: this, }); }, this); }, + onUpdate: function (host) { + if (!this.isVisible()) return; + this.onGetHostStatus(host); + + if (this.updating) { + clearTimeout(this.updating); + } + this.updating = setTimeout(this.update, 2000); + }, /** * Updates the buttons in the Connection Manager UI according to the @@ -312,7 +322,10 @@ Deluge.ConnectionManager = Ext.extend(Ext.Window, { // private onHide: function () { - if (this.running) window.clearInterval(this.running); + if (this.updating) { + window.clearTimeout(this.updating); + this.updating = undefined; + } }, // private @@ -396,8 +409,8 @@ Deluge.ConnectionManager = Ext.extend(Ext.Window, { this.stopHostButton = bbar.items.get('cm-stop'); } this.loadHosts(); - if (this.running) return; - this.running = window.setInterval(this.update, 2000, this); + if (this.updating) return; + this.updating = window.setTimeout(this.update, 2000); }, // private diff --git a/deluge/ui/web/js/deluge-all/Sidebar.js b/deluge/ui/web/js/deluge-all/Sidebar.js index eb08a898f..a6512b258 100644 --- a/deluge/ui/web/js/deluge-all/Sidebar.js +++ b/deluge/ui/web/js/deluge-all/Sidebar.js @@ -60,14 +60,16 @@ Deluge.Sidebar = Ext.extend(Ext.Panel, { this.doLayout(); this.panels[filter] = panel; - panel.header.on('click', function (header) { - if (!deluge.config.sidebar_multiple_filters) { - deluge.ui.update(); - } - if (!panel.list.getSelectionCount()) { - panel.list.select(0); - } - }); + if (panel.header) { + panel.header.on('click', function (header) { + if (!deluge.config.sidebar_multiple_filters) { + deluge.ui.update(); + } + if (!panel.list.getSelectionCount()) { + panel.list.select(0); + } + }); + } this.fireEvent('filtercreate', this, panel); panel.updateStates(states); diff --git a/deluge/ui/web/js/deluge-all/TorrentGrid.js b/deluge/ui/web/js/deluge-all/TorrentGrid.js index 333d1335c..5db7e9fbc 100644 --- a/deluge/ui/web/js/deluge-all/TorrentGrid.js +++ b/deluge/ui/web/js/deluge-all/TorrentGrid.js @@ -61,7 +61,7 @@ return String.format( '<div style="background: url(' + deluge.config.base + - 'tracker/{0}) no-repeat; padding-left: 20px;">{0}</div>', + 'tracker/{0}) no-repeat; background-size: contain; padding-left: 20px;">{0}</div>', Ext.util.Format.htmlEncode(value) ); } diff --git a/deluge/ui/web/js/deluge-all/UI.js b/deluge/ui/web/js/deluge-all/UI.js index cc877d597..f7edc84b1 100644 --- a/deluge/ui/web/js/deluge-all/UI.js +++ b/deluge/ui/web/js/deluge-all/UI.js @@ -134,14 +134,24 @@ deluge.ui = { deluge.details.update(); }, - onConnectionError: function (error) {}, + onConnectionError: function (error) { + if (this.checking) { + clearTimeout(this.checking); + } + this.checking = setTimeout(this.checkConnection, 2000); + }, onConnectionSuccess: function (result) { + if (this.checking) { + clearTimeout(this.checking); + this.checking = undefined; + } + this.running = setTimeout(this.update, 2000); + this.update(); deluge.statusbar.setStatus({ iconCls: 'x-deluge-statusbar icon-ok', text: _('Connection restored'), }); - clearInterval(this.checking); if (!result) { deluge.connectionManager.show(); } @@ -159,9 +169,13 @@ deluge.ui = { deluge.statusbar.setStatus({ text: _('Lost connection to webserver'), }); - this.checking = setInterval(this.checkConnection, 2000); + this.checking = setTimeout(this.checkConnection, 2000); } this.errorCount++; + if (this.running) { + clearTimeout(this.running); + this.running = undefined; + } }, /** @@ -170,10 +184,15 @@ deluge.ui = { * Updates the various components in the interface. */ onUpdate: function (data) { + if (this.running) { + clearTimeout(this.running); + this.running = undefined; + } if (!data['connected']) { deluge.connectionManager.disconnect(true); return; } + this.running = setTimeout(this.update, 2000); if (deluge.config.show_session_speed) { document.title = @@ -201,7 +220,7 @@ deluge.ui = { */ onConnect: function () { if (!this.running) { - this.running = setInterval(this.update, 2000); + this.running = setTimeout(this.update, 2000); this.update(); } deluge.client.web.get_plugins({ @@ -280,8 +299,8 @@ deluge.ui = { */ stop: function () { if (this.running) { - clearInterval(this.running); - this.running = false; + clearTimeout(this.running); + this.running = undefined; deluge.torrents.getStore().removeAll(); } }, diff --git a/deluge/ui/web/js/deluge-all/details/FilesTab.js b/deluge/ui/web/js/deluge-all/details/FilesTab.js index 60de832a6..36ef968dd 100644 --- a/deluge/ui/web/js/deluge-all/details/FilesTab.js +++ b/deluge/ui/web/js/deluge-all/details/FilesTab.js @@ -214,7 +214,9 @@ Deluge.details.FilesTab = Ext.extend(Ext.ux.tree.TreeGrid, { { success: function () { Ext.each(nodes, function (node) { - node.setColumnValue(3, baseItem.filePriority); + node.attributes.priority = + baseItem.filePriority; + node.ui.updateColumns(); }); }, scope: this, diff --git a/deluge/ui/web/js/deluge-all/details/OptionsTab.js b/deluge/ui/web/js/deluge-all/details/OptionsTab.js index 7e59cba4e..f8a08be9d 100644 --- a/deluge/ui/web/js/deluge-all/details/OptionsTab.js +++ b/deluge/ui/web/js/deluge-all/details/OptionsTab.js @@ -86,7 +86,7 @@ Deluge.details.OptionsTab = Ext.extend(Ext.form.FormPanel, { xtype: 'number', decimalPrecision: 1, minValue: -1, - maxValue: 99999, + maxValue: 9999999, }, }); this.fieldsets.bandwidth.add({ @@ -113,7 +113,7 @@ Deluge.details.OptionsTab = Ext.extend(Ext.form.FormPanel, { xtype: 'number', decimalPrecision: 1, minValue: -1, - maxValue: 99999, + maxValue: 9999999, }, }); this.fieldsets.bandwidth.add({ diff --git a/deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js b/deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js index 8c32da501..563dedd3c 100644 --- a/deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js +++ b/deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js @@ -40,7 +40,7 @@ Deluge.preferences.Bandwidth = Ext.extend(Ext.form.FormPanel, { defaultType: 'spinnerfield', defaults: { minValue: -1, - maxValue: 99999, + maxValue: 9999999, }, style: 'margin-bottom: 0px; padding-bottom: 0px;', autoHeight: true, diff --git a/deluge/ui/web/js/deluge-all/preferences/DaemonPage.js b/deluge/ui/web/js/deluge-all/preferences/DaemonPage.js index 1787826b7..da205c29b 100644 --- a/deluge/ui/web/js/deluge-all/preferences/DaemonPage.js +++ b/deluge/ui/web/js/deluge-all/preferences/DaemonPage.js @@ -40,7 +40,7 @@ Deluge.preferences.Daemon = Ext.extend(Ext.form.FormPanel, { value: 58846, decimalPrecision: 0, minValue: -1, - maxValue: 99999, + maxValue: 65535, }) ); diff --git a/deluge/ui/web/js/deluge-all/preferences/InterfacePage.js b/deluge/ui/web/js/deluge-all/preferences/InterfacePage.js index b6b76ebde..a5a7909f9 100644 --- a/deluge/ui/web/js/deluge-all/preferences/InterfacePage.js +++ b/deluge/ui/web/js/deluge-all/preferences/InterfacePage.js @@ -88,6 +88,33 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, { }) ); + var themePanel = this.add({ + xtype: 'fieldset', + border: false, + title: _('Theme'), + style: 'margin-bottom: 0px; padding-bottom: 5px; padding-top: 5px', + autoHeight: true, + labelWidth: 1, + defaultType: 'checkbox', + }); + this.theme = om.bind( + 'theme', + themePanel.add({ + xtype: 'combo', + name: 'theme', + labelSeparator: '', + mode: 'local', + width: 200, + store: new Ext.data.ArrayStore({ + fields: ['id', 'text'], + }), + editable: false, + triggerAction: 'all', + valueField: 'id', + displayField: 'text', + }) + ); + fieldset = this.add({ xtype: 'fieldset', border: false, @@ -140,7 +167,7 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, { fieldLabel: _('Session Timeout:'), decimalPrecision: 0, minValue: -1, - maxValue: 99999, + maxValue: Number.MAX_SAFE_INTEGER || Number.MAX_VALUE, }) ); om.bind( @@ -217,6 +244,24 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, { icon: Ext.MessageBox.QUESTION, }); } + if ('theme' in changed) { + deluge.client.web.set_theme(changed['theme']); + Ext.Msg.show({ + title: _('WebUI Theme Changed'), + msg: _( + 'Do you want to refresh the page now to use the new theme?' + ), + buttons: { + yes: _('Refresh'), + no: _('Close'), + }, + multiline: false, + fn: function (btnText) { + if (btnText === 'yes') location.reload(); + }, + icon: Ext.MessageBox.QUESTION, + }); + } } if (this.oldPassword.getValue() || this.newPassword.getValue()) { this.onPasswordChange(); @@ -237,6 +282,11 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, { this.language.setValue(this.optionsManager.get('language')); }, + onGotThemes: function (info, obj, response, request) { + this.theme.store.loadData(info); + this.theme.setValue(this.optionsManager.get('theme')); + }, + onPasswordChange: function () { var newPassword = this.newPassword.getValue(); if (newPassword != this.confirmPassword.getValue()) { @@ -295,6 +345,10 @@ Deluge.preferences.Interface = Ext.extend(Ext.form.FormPanel, { success: this.onGotLanguages, scope: this, }); + deluge.client.webutils.get_themes({ + success: this.onGotThemes, + scope: this, + }); }, onSSLCheck: function (e, checked) { diff --git a/deluge/ui/web/json_api.py b/deluge/ui/web/json_api.py index 3f256140e..5f4b3dcb8 100644 --- a/deluge/ui/web/json_api.py +++ b/deluge/ui/web/json_api.py @@ -600,7 +600,10 @@ class WebApi(JSONComponent): progresses = dirinfo.setdefault('progresses', []) progresses.append(torrent_file['size'] * torrent_file['progress'] / 100) - dirinfo['progress'] = sum(progresses) / dirinfo['size'] * 100 + if dirinfo['size'] > 0: + dirinfo['progress'] = sum(progresses) / dirinfo['size'] * 100 + else: + dirinfo['progress'] = 100 dirinfo['path'] = dirname dirname = os.path.dirname(dirname) @@ -979,6 +982,16 @@ class WebApi(JSONComponent): """ return self.event_queue.get_events(__request__.session_id) + @export + def set_theme(self, theme): + """ + Sets a new Theme to the WebUI + + Args: + theme (str): the theme to apply + """ + component.get('DelugeWeb').set_theme(theme) + class WebUtils(JSONComponent): """ @@ -997,3 +1010,13 @@ class WebUtils(JSONComponent): list: of tuples ``[(lang-id, language-name), ...]`` """ return get_languages() + + @export + def get_themes(self): + """ + Get the available themes + + Returns: + list: of themes ``[theme1, theme2, ...]`` + """ + return component.get('DelugeWeb').get_themes() diff --git a/deluge/ui/web/server.py b/deluge/ui/web/server.py index f391a78d2..5fbdd4eae 100644 --- a/deluge/ui/web/server.py +++ b/deluge/ui/web/server.py @@ -12,6 +12,7 @@ import logging import mimetypes import os import tempfile +from pathlib import Path from twisted.application import internet, service from twisted.internet import defer, reactor @@ -73,6 +74,20 @@ def rpath(*paths): return common.resource_filename('deluge.ui.web', os.path.join(*paths)) +def absolute_base_url(base): + """Returns base as absolute URL for links""" + if not base: + base = '/' + + if not base.startswith('/'): + base = '/' + base + + if not base.endswith('/'): + base += '/' + + return base + + class GetText(resource.Resource): def render(self, request): request.setHeader(b'content-type', b'text/javascript; encoding=utf-8') @@ -127,14 +142,12 @@ class Upload(resource.Resource): request.setHeader(b'content-type', b'text/html') request.setResponseCode(http.OK) - return json.dumps({'success': bool(filenames), 'files': filenames}).encode( - 'utf8' - ) + return json.dumps({'success': bool(filenames), 'files': filenames}).encode() class Render(resource.Resource): def __init__(self): - resource.Resource.__init__(self) + super().__init__() # Make a list of all the template files to check requests against. self.template_files = fnmatch.filter(os.listdir(rpath('render')), '*.html') @@ -163,7 +176,7 @@ class Render(resource.Resource): class Tracker(resource.Resource): def __init__(self): - resource.Resource.__init__(self) + super().__init__() try: self.tracker_icons = component.get('TrackerIcons') except KeyError: @@ -178,7 +191,7 @@ class Tracker(resource.Resource): request.setHeader( b'cache-control', b'public, must-revalidate, max-age=86400' ) - request.setHeader(b'content-type', icon.get_mimetype().encode('utf8')) + request.setHeader(b'content-type', icon.get_mimetype().encode()) request.setResponseCode(http.OK) request.write(icon.get_data()) request.finish() @@ -198,7 +211,7 @@ class Flag(resource.Resource): return self def render(self, request): - flag = request.country.decode('utf-8').lower() + '.png' + flag = request.country.decode().lower() + '.png' path = ('ui', 'data', 'pixmaps', 'flags', flag) filename = common.resource_filename('deluge', os.path.join(*path)) if os.path.exists(filename): @@ -447,7 +460,6 @@ class Themes(static.File): class TopLevel(resource.Resource): - __stylesheets = [ 'css/ext-all-notheme.css', 'css/ext-extensions.css', @@ -455,7 +467,7 @@ class TopLevel(resource.Resource): ] def __init__(self): - resource.Resource.__init__(self) + super().__init__() self.putChild(b'css', LookupResource('Css', rpath('css'))) if os.path.isfile(rpath('js', 'gettext.js')): @@ -475,7 +487,8 @@ class TopLevel(resource.Resource): self.putChild( b'ui_images', LookupResource( - 'UI_Images', common.resource_filename('deluge.ui.data', 'pixmaps') + 'UI_Images', + common.resource_filename('deluge.ui', os.path.join('data', 'pixmaps')), ), ) @@ -527,15 +540,28 @@ class TopLevel(resource.Resource): self.putChild(b'themes', Themes(rpath('themes'))) self.putChild(b'tracker', Tracker()) - theme = component.get('DelugeWeb').config['theme'] - if not os.path.isfile(rpath('themes', 'css', 'xtheme-%s.css' % theme)): - theme = CONFIG_DEFAULTS.get('theme') - self.__stylesheets.insert(1, 'themes/css/xtheme-%s.css' % theme) - @property def stylesheets(self): return self.__stylesheets + def get_themes(self): + themes_dir = Path(rpath('themes', 'css')) + themes = [ + theme.stem.split('xtheme-')[1] for theme in themes_dir.glob('xtheme-*.css') + ] + themes = [(theme, _(theme.capitalize())) for theme in themes] + return themes + + def set_theme(self, theme: str): + if not os.path.isfile(rpath('themes', 'css', f'xtheme-{theme}.css')): + theme = CONFIG_DEFAULTS.get('theme') + self.__theme = f'themes/css/xtheme-{theme}.css' + + # Only one xtheme CSS, ordered last to override other styles. + if 'xtheme-' in self.stylesheets[-1]: + self.__stylesheets.pop() + self.__stylesheets.append(self.__theme) + def add_script(self, script): """ Adds a script to the server so it is included in the <head> element @@ -558,30 +584,21 @@ class TopLevel(resource.Resource): self.__scripts.remove(script) self.__debug_scripts.remove(script) - def getChild(self, path, request): # NOQA: N802 - if not path: - return self - else: - return resource.Resource.getChild(self, path, request) - def getChildWithDefault(self, path, request): # NOQA: N802 # Calculate the request base - header = request.getHeader(b'x-deluge-base') - base = header.decode('utf-8') if header else component.get('DelugeWeb').base - - # validate the base parameter - if not base: - base = '/' + header = request.getHeader('x-deluge-base') + config_base = component.get('DelugeWeb').base + base = header if header else config_base - if base[0] != '/': - base = '/' + base + first_request = not hasattr(request, 'base') + request.base = absolute_base_url(base).encode() - if base[-1] != '/': - base += '/' + base_resource = first_request and path.decode() == config_base.strip('/') - request.base = base.encode('utf-8') + if not path or base_resource: + return self - return resource.Resource.getChildWithDefault(self, path, request) + return super().getChildWithDefault(path, request) def render(self, request): uri_true = ('true', 'yes', 'on', '1') @@ -653,7 +670,7 @@ class DelugeWeb(component.Component): reactor). If False shares the process and twisted reactor from WebUI plugin or tests. """ - component.Component.__init__(self, 'DelugeWeb', depend=['Web']) + super().__init__('DelugeWeb', depend=['Web']) self.config = configmanager.ConfigManager( 'web.conf', defaults=CONFIG_DEFAULTS, file_version=2 ) @@ -680,9 +697,7 @@ class DelugeWeb(component.Component): elif options.no_ssl: self.https = False - if self.base != '/': - # Strip away slashes and serve on the base path as well as root path - self.top_level.putChild(self.base.strip('/'), self.top_level) + self.top_level.set_theme(self.config['theme']) setup_translation() @@ -742,8 +757,8 @@ class DelugeWeb(component.Component): def start_normal(self): self.socket = reactor.listenTCP(self.port, self.site, interface=self.interface) ip = self.socket.getHost().host - ip = '[%s]' % ip if is_ipv6(ip) else ip - log.info('Serving at http://%s:%s%s', ip, self.port, self.base) + ip = f'[{ip}]' if is_ipv6(ip) else ip + log.info(f'Serving at http://{ip}:{self.port}{self.base}') def start_ssl(self): check_ssl_keys() @@ -759,8 +774,8 @@ class DelugeWeb(component.Component): interface=self.interface, ) ip = self.socket.getHost().host - ip = '[%s]' % ip if is_ipv6(ip) else ip - log.info('Serving at https://%s:%s%s', ip, self.port, self.base) + ip = f'[{ip}]' if is_ipv6(ip) else ip + log.info(f'Serving at https://{ip}:{self.port}{self.base}') def stop(self): log.info('Shutting down webserver') @@ -790,6 +805,12 @@ class DelugeWeb(component.Component): config['language'] = CONFIG_DEFAULTS['language'] return config + def get_themes(self): + return self.top_level.get_themes() + + def set_theme(self, theme: str): + self.top_level.set_theme(theme) + if __name__ == '__builtin__': deluge_web = DelugeWeb() diff --git a/deluge/ui/web/themes/images/access/grid/hmenu-lock.png b/deluge/ui/web/themes/images/access/grid/hmenu-lock.png Binary files differindex 5d33c09d9..194756e9f 100644 --- a/deluge/ui/web/themes/images/access/grid/hmenu-lock.png +++ b/deluge/ui/web/themes/images/access/grid/hmenu-lock.png diff --git a/deluge/ui/web/themes/images/access/grid/hmenu-unlock.png b/deluge/ui/web/themes/images/access/grid/hmenu-unlock.png Binary files differindex 0371ca47e..435bd74fe 100644 --- a/deluge/ui/web/themes/images/access/grid/hmenu-unlock.png +++ b/deluge/ui/web/themes/images/access/grid/hmenu-unlock.png diff --git a/deluge/ui/web/themes/images/access/slider/slider-bg.png b/deluge/ui/web/themes/images/access/slider/slider-bg.png Binary files differindex 1ba12ad94..d645fa8ae 100644 --- a/deluge/ui/web/themes/images/access/slider/slider-bg.png +++ b/deluge/ui/web/themes/images/access/slider/slider-bg.png diff --git a/deluge/ui/web/themes/images/access/slider/slider-thumb.png b/deluge/ui/web/themes/images/access/slider/slider-thumb.png Binary files differindex 1712edfd2..99e0e14e1 100644 --- a/deluge/ui/web/themes/images/access/slider/slider-thumb.png +++ b/deluge/ui/web/themes/images/access/slider/slider-thumb.png diff --git a/deluge/ui/web/themes/images/access/slider/slider-v-thumb.png b/deluge/ui/web/themes/images/access/slider/slider-v-thumb.png Binary files differindex df9cfc96b..cfae8cd8e 100644 --- a/deluge/ui/web/themes/images/access/slider/slider-v-thumb.png +++ b/deluge/ui/web/themes/images/access/slider/slider-v-thumb.png diff --git a/deluge/ui/web/themes/images/access/window/right-corners.png b/deluge/ui/web/themes/images/access/window/right-corners.png Binary files differindex 1111bb4de..e3faa016b 100644 --- a/deluge/ui/web/themes/images/access/window/right-corners.png +++ b/deluge/ui/web/themes/images/access/window/right-corners.png diff --git a/deluge/ui/web/themes/images/access/window/top-bottom.png b/deluge/ui/web/themes/images/access/window/top-bottom.png Binary files differindex 179747b2b..26d74212d 100644 --- a/deluge/ui/web/themes/images/access/window/top-bottom.png +++ b/deluge/ui/web/themes/images/access/window/top-bottom.png diff --git a/deluge/ui/web/themes/images/default/grid/hmenu-lock.png b/deluge/ui/web/themes/images/default/grid/hmenu-lock.png Binary files differindex 5d33c09d9..194756e9f 100644 --- a/deluge/ui/web/themes/images/default/grid/hmenu-lock.png +++ b/deluge/ui/web/themes/images/default/grid/hmenu-lock.png diff --git a/deluge/ui/web/themes/images/default/grid/hmenu-unlock.png b/deluge/ui/web/themes/images/default/grid/hmenu-unlock.png Binary files differindex 0371ca47e..435bd74fe 100644 --- a/deluge/ui/web/themes/images/default/grid/hmenu-unlock.png +++ b/deluge/ui/web/themes/images/default/grid/hmenu-unlock.png diff --git a/deluge/ui/web/themes/images/default/slider/slider-bg.png b/deluge/ui/web/themes/images/default/slider/slider-bg.png Binary files differindex 6825d7357..ca5009390 100644 --- a/deluge/ui/web/themes/images/default/slider/slider-bg.png +++ b/deluge/ui/web/themes/images/default/slider/slider-bg.png diff --git a/deluge/ui/web/themes/images/default/slider/slider-thumb.png b/deluge/ui/web/themes/images/default/slider/slider-thumb.png Binary files differindex d16ed52eb..c1abf95b5 100644 --- a/deluge/ui/web/themes/images/default/slider/slider-thumb.png +++ b/deluge/ui/web/themes/images/default/slider/slider-thumb.png diff --git a/deluge/ui/web/themes/images/default/slider/slider-v-thumb.png b/deluge/ui/web/themes/images/default/slider/slider-v-thumb.png Binary files differindex cc86cb7ed..c80e1458b 100644 --- a/deluge/ui/web/themes/images/default/slider/slider-v-thumb.png +++ b/deluge/ui/web/themes/images/default/slider/slider-v-thumb.png diff --git a/deluge/ui/web/themes/images/default/window/right-corners.png b/deluge/ui/web/themes/images/default/window/right-corners.png Binary files differindex 7c400076b..2440d2ffd 100644 --- a/deluge/ui/web/themes/images/default/window/right-corners.png +++ b/deluge/ui/web/themes/images/default/window/right-corners.png diff --git a/deluge/ui/web/themes/images/default/window/top-bottom.png b/deluge/ui/web/themes/images/default/window/top-bottom.png Binary files differindex 3b5f86b25..d6428270f 100644 --- a/deluge/ui/web/themes/images/default/window/top-bottom.png +++ b/deluge/ui/web/themes/images/default/window/top-bottom.png diff --git a/deluge/ui/web/themes/images/gray/slider/slider-thumb.png b/deluge/ui/web/themes/images/gray/slider/slider-thumb.png Binary files differindex 6ec16677e..ebe1b2ec3 100644 --- a/deluge/ui/web/themes/images/gray/slider/slider-thumb.png +++ b/deluge/ui/web/themes/images/gray/slider/slider-thumb.png diff --git a/deluge/ui/web/themes/images/gray/window/left-corners.png b/deluge/ui/web/themes/images/gray/window/left-corners.png Binary files differindex f9f44ad09..a32c8064e 100644 --- a/deluge/ui/web/themes/images/gray/window/left-corners.png +++ b/deluge/ui/web/themes/images/gray/window/left-corners.png diff --git a/deluge/ui/web/themes/images/gray/window/right-corners.png b/deluge/ui/web/themes/images/gray/window/right-corners.png Binary files differindex e0a58d39a..fed4d38fa 100644 --- a/deluge/ui/web/themes/images/gray/window/right-corners.png +++ b/deluge/ui/web/themes/images/gray/window/right-corners.png diff --git a/deluge/ui/web/web.py b/deluge/ui/web/web.py index f855bd06c..ae428c754 100644 --- a/deluge/ui/web/web.py +++ b/deluge/ui/web/web.py @@ -17,7 +17,6 @@ log = logging.getLogger(__name__) class Web(UI): - cmd_description = """Web-based user interface (http://localhost:8112)""" def __init__(self, *args, **kwargs): diff --git a/docs/requirements.txt b/docs/requirements.txt index 70739640a..3da1967f8 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,5 +1,5 @@ -sphinx==4.* -myst-parser -sphinx_rtd_theme -sphinxcontrib-spelling==7.3.0 -sphinx-autodoc-typehints +sphinx==7.2.* +myst-parser==2.0.* +sphinx_rtd_theme==2.0.* +sphinxcontrib-spelling==8.0.* +sphinx-autodoc-typehints==1.25.* diff --git a/docs/source/intro/01-install.md b/docs/source/intro/01-install.md index 0d49d82ba..15e99456b 100644 --- a/docs/source/intro/01-install.md +++ b/docs/source/intro/01-install.md @@ -48,9 +48,9 @@ One-click [**Install**](https://dl.flathub.org/repo/appstream/org.deluge_torrent ## <i class="fa fa-windows"></i> Windows -Unfortunately no official installer package currently available. +Download [installer](https://ftp.osuosl.org/pub/deluge/windows/?C=M;O=D) -See [Alternative Installs](#alternative-installs) +Availble for Windows 7, 8 & 10 for both 32-bit and 64-bit OSes. ## <i class="fa fa-apple"></i> macOS @@ -96,15 +96,6 @@ The [development PPA] contains daily builds from the `develop` branch. sudo add-apt-repository -u ppa:deluge-team/develop sudo apt install deluge -### Windows Community - -Due to move to GTK3 and Python 3 and problems with pyinstaller there are only community -created installers available. - -Check sticky topics in [Windows Forum] for latest updates. - -For reference [issue #3201] is tracking progress on an official installer. - ### macOS Community #### Unofficial `.app` packages @@ -138,7 +129,5 @@ sudo port install deluge [development ppa]: https://launchpad.net/~deluge-team/+archive/ubuntu/develop/ [stable ppa]: https://launchpad.net/~deluge-team/+archive/ubuntu/stable/ [homebrew]: https://brew.sh/ -[issue #3201]: https://dev.deluge-torrent.org/ticket/3201 -[windows forum]: https://forum.deluge-torrent.org/viewforum.php?f=12 [macos forum]: https://forum.deluge-torrent.org/viewforum.php?f=13 [depends]: ../depends.md diff --git a/generate_pot.py b/generate_pot.py index efbdc7824..fdc7baec3 100755 --- a/generate_pot.py +++ b/generate_pot.py @@ -39,7 +39,7 @@ xgettext_cmd = [ ] to_translate = [] -for (dirpath, dirnames, filenames) in os.walk('deluge'): +for dirpath, dirnames, filenames in os.walk('deluge'): for filename in filenames: if dirpath not in EXCLUSIONS and not RE_EXC_PLUGIN_BUILD.match(dirpath): filepath = os.path.join(dirpath, filename) @@ -67,13 +67,13 @@ call(xgettext_cmd) # find javascript files js_to_translate = [] -for (dirpath, dirnames, filenames) in os.walk(WEBUI_JS_DIR): +for dirpath, dirnames, filenames in os.walk(WEBUI_JS_DIR): for filename in filenames: if os.path.splitext(filename)[1] == '.js': js_to_translate.append(os.path.join(dirpath, filename)) # find render html files -for (dirpath, dirnames, filenames) in os.walk(WEBUI_RENDER_DIR): +for dirpath, dirnames, filenames in os.walk(WEBUI_RENDER_DIR): for filename in filenames: if os.path.splitext(filename)[1] == '.html': js_to_translate.append(os.path.join(dirpath, filename)) diff --git a/packaging/win/deluge-win-installer.nsi b/packaging/win/deluge-win-installer.nsi index 333401509..1f9c2e271 100644 --- a/packaging/win/deluge-win-installer.nsi +++ b/packaging/win/deluge-win-installer.nsi @@ -187,6 +187,7 @@ LangString DESC_Section3 ${LANG_ENGLISH} "Select this option to let Deluge handl Section -Uninstaller WriteUninstaller ${PROGRAM_UNINST_FILENAME} WriteRegStr ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}" "DisplayName" "$(^Name)" + WriteRegStr ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}" "DisplayVersion" ${PROGRAM_VERSION} WriteRegStr ${PROGRAM_UNINST_ROOT_KEY} "${PROGRAM_UNINST_KEY}" "UninstallString" ${PROGRAM_UNINST_FILENAME} SectionEnd @@ -202,8 +203,8 @@ Section Uninstall !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder SetShellVarContext all Delete "$SMPROGRAMS\$StartMenuFolder\Deluge.lnk" + Delete "$SMPROGRAMS\$StartMenuFolder\Website.lnk" Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Deluge.lnk" - Delete "$SMPROGRAMS\$StartMenuFolder\Deluge Website.lnk" RmDir "$SMPROGRAMS\$StartMenuFolder" DeleteRegKey /ifempty HKCR "Software\Deluge" diff --git a/pyproject.toml b/pyproject.toml index 67ebe0a0c..169561f13 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,11 +1,29 @@ [build-system] -requires = [ - "setuptools", - "wheel", -] +requires = ["setuptools", "wheel"] [tool.black] skip-string-normalization = true [tool.isort] profile = "black" + +[tool.pytest.ini_options] +# Dump tracebacks if a test takes longer than X seconds +faulthandler_timeout = 60 +# Hide logged warnings and errors in test output. +log_cli_level = "CRITICAL" +addopts = "--basetemp=_pytest_temp" +markers = [ + "todo: Tests that are yet to be written", + "gtkui: Tests for GTK code", + "security: Security related tests", + "slow: Tests that are particularly slow", + "internet: Tests that require internet connectivity", +] +filterwarnings = [ + "ignore::DeprecationWarning:gi", + "ignore::DeprecationWarning:twisted.internet.gireactor", + "ignore:twisted.web.resource.*:DeprecationWarning", + "ignore:Using readBody.*:DeprecationWarning", + "ignore:resume_data is deprecated.*:DeprecationWarning:deluge.core.alertmanager", +] diff --git a/requirements-ci.txt b/requirements-ci.txt new file mode 100644 index 000000000..0ebcd6077 --- /dev/null +++ b/requirements-ci.txt @@ -0,0 +1,4 @@ +-r requirements.txt +-r requirements-tests.txt +libtorrent==2.0.7 +pytest==7.4.2 diff --git a/requirements-tests.txt b/requirements-tests.txt index 5e8fb20ad..a570108ad 100644 --- a/requirements-tests.txt +++ b/requirements-tests.txt @@ -1,3 +1,4 @@ +libtorrent pytest pytest-twisted pytest-cov @@ -9,3 +10,4 @@ flake8-isort pep8-naming mccabe pylint +asyncmock; python_version <= '3.7' diff --git a/requirements.txt b/requirements.txt index 30073fc88..a26ec758d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,7 @@ rencode pyopenssl pyxdg pillow +pillow<=9; python_version=="3.7" mako setuptools chardet @@ -14,4 +15,4 @@ windows-curses; sys_platform == 'win32' zope.interface>=4.4.2 distro; 'linux' in sys_platform or 'bsd' in sys_platform pygeoip -https://github.com/pydron/ifaddr/archive/37cb5334f392f12811d38d90ec891746e3247c76.zip +ifaddr>=0.2.0 @@ -40,7 +40,7 @@ def osx_check(): desktop_data = 'deluge/ui/data/share/applications/deluge.desktop' -appdata_data = 'deluge/ui/data/share/appdata/deluge.appdata.xml' +metainfo_data = 'deluge/ui/data/share/metainfo/deluge.metainfo.xml' # Variables for setuptools.setup _package_data = {} @@ -199,7 +199,7 @@ class BuildTranslations(Command): intltool_merge = 'intltool-merge' if not windows_check() and which(intltool_merge): intltool_merge_opts = '--utf8 --quiet' - for data_file in (desktop_data, appdata_data): + for data_file in (desktop_data, metainfo_data): # creates the translated file from .in file. in_file = data_file + '.in' if 'xml' in data_file: @@ -259,7 +259,7 @@ class CleanTranslations(Command): self.set_undefined_options('clean', ('all', 'all')) def run(self): - for path in (desktop_data, appdata_data): + for path in (desktop_data, metainfo_data): if os.path.isfile(path): print('Deleting %s' % path) os.remove(path) @@ -476,8 +476,8 @@ if not windows_check() and not osx_check(): ) if os.path.isfile(desktop_data): _data_files.append(('share/applications', [desktop_data])) - if os.path.isfile(appdata_data): - _data_files.append(('share/appdata', [appdata_data])) + if os.path.isfile(metainfo_data): + _data_files.append(('share/metainfo', [metainfo_data])) # Entry Points @@ -7,17 +7,6 @@ envlist = py3, lint, docs minversion=3.0 -[pytest] -# Hide logged warnings and errors in test output. -log_cli_level = CRITICAL -addopts = -p no:warnings --basetemp=_pytest_temp -markers = - todo: Tests that are yet to be written - gtkui: Tests for GTK code - security: Security related tests - slow: Tests that are particularly slow - internet: Tests that require internet connectivity - # ================= # Base dependencies # ================= @@ -56,7 +45,7 @@ deps = [testenv] install_command = python -m pip install --ignore-installed {opts} {packages} -passenv = DISPLAY PYTHONPATH APPDATA +passenv = DISPLAY,PYTHONPATH,APPDATA setenv = PYTHONPATH = {toxinidir} PYTEST_ADDOPTS = --verbose --capture=no @@ -101,7 +90,7 @@ commands = [testenv:lint] sitepackages = False -passenv = HOMEPATH SSH_AUTH_SOCK +passenv = HOMEPATH,SSH_AUTH_SOCK deps = {[baselint]deps} commands = pre-commit run --all-files |