summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/cd.yml26
-rw-r--r--.github/workflows/ci.yml36
-rw-r--r--.github/workflows/docs.yml23
-rw-r--r--.github/workflows/lint.yml6
-rw-r--r--.gitignore3
-rw-r--r--.pre-commit-config.yaml12
-rw-r--r--.readthedocs.yml11
-rw-r--r--CHANGELOG.md22
-rw-r--r--deluge/bencode.py1
-rw-r--r--deluge/common.py106
-rw-r--r--deluge/component.py62
-rw-r--r--deluge/conftest.py46
-rw-r--r--deluge/core/alertmanager.py129
-rw-r--r--deluge/core/authmanager.py4
-rw-r--r--deluge/core/core.py77
-rw-r--r--deluge/core/rpcserver.py4
-rw-r--r--deluge/core/torrentmanager.py82
-rw-r--r--deluge/decorators.py3
-rw-r--r--deluge/i18n/af.po12
-rw-r--r--deluge/i18n/ar.po12
-rw-r--r--deluge/i18n/ast.po12
-rw-r--r--deluge/i18n/be.po1910
-rw-r--r--deluge/i18n/bg.po12
-rw-r--r--deluge/i18n/bn.po12
-rw-r--r--deluge/i18n/bs.po12
-rw-r--r--deluge/i18n/ca.po79
-rw-r--r--deluge/i18n/cs.po12
-rw-r--r--deluge/i18n/cy.po12
-rw-r--r--deluge/i18n/da.po12
-rw-r--r--deluge/i18n/de.po66
-rw-r--r--deluge/i18n/el.po12
-rw-r--r--deluge/i18n/en_AU.po12
-rw-r--r--deluge/i18n/en_CA.po12
-rw-r--r--deluge/i18n/en_GB.po939
-rw-r--r--deluge/i18n/eo.po12
-rw-r--r--deluge/i18n/es.po12
-rw-r--r--deluge/i18n/et.po12
-rw-r--r--deluge/i18n/eu.po12
-rw-r--r--deluge/i18n/fa.po12
-rw-r--r--deluge/i18n/fi.po230
-rw-r--r--deluge/i18n/fo.po12
-rw-r--r--deluge/i18n/fr.po14
-rw-r--r--deluge/i18n/fy.po12
-rw-r--r--deluge/i18n/ga.po12
-rw-r--r--deluge/i18n/gl.po12
-rw-r--r--deluge/i18n/he.po12
-rw-r--r--deluge/i18n/hi.po98
-rw-r--r--deluge/i18n/hr.po14
-rw-r--r--deluge/i18n/hu.po12
-rw-r--r--deluge/i18n/id.po12
-rw-r--r--deluge/i18n/is.po12
-rw-r--r--deluge/i18n/it.po12
-rw-r--r--deluge/i18n/iu.po12
-rw-r--r--deluge/i18n/ja.po12
-rw-r--r--deluge/i18n/ka.po12
-rw-r--r--deluge/i18n/kk.po12
-rw-r--r--deluge/i18n/km.po12
-rw-r--r--deluge/i18n/kn.po12
-rw-r--r--deluge/i18n/ko.po12
-rw-r--r--deluge/i18n/ku.po12
-rw-r--r--deluge/i18n/ky.po12
-rw-r--r--deluge/i18n/la.po12
-rw-r--r--deluge/i18n/lb.po12
-rw-r--r--deluge/i18n/lt.po12
-rw-r--r--deluge/i18n/lv.po18
-rw-r--r--deluge/i18n/mk.po12
-rw-r--r--deluge/i18n/ml.po12
-rw-r--r--deluge/i18n/mo.po6164
-rw-r--r--deluge/i18n/ms.po12
-rw-r--r--deluge/i18n/nap.po12
-rw-r--r--deluge/i18n/nb.po12
-rw-r--r--deluge/i18n/nds.po12
-rw-r--r--deluge/i18n/nl.po42
-rw-r--r--deluge/i18n/nn.po12
-rw-r--r--deluge/i18n/oc.po12
-rw-r--r--deluge/i18n/pl.po110
-rw-r--r--deluge/i18n/pms.po12
-rw-r--r--deluge/i18n/pt.po12
-rw-r--r--deluge/i18n/pt_BR.po12
-rw-r--r--deluge/i18n/ro.po12
-rw-r--r--deluge/i18n/ru.po1306
-rw-r--r--deluge/i18n/si.po12
-rw-r--r--deluge/i18n/sk.po12
-rw-r--r--deluge/i18n/sl.po12
-rw-r--r--deluge/i18n/sr.po12
-rw-r--r--deluge/i18n/sv.po14
-rw-r--r--deluge/i18n/ta.po12
-rw-r--r--deluge/i18n/te.po12
-rw-r--r--deluge/i18n/th.po12
-rw-r--r--deluge/i18n/tl.po12
-rw-r--r--deluge/i18n/tlh.po12
-rw-r--r--deluge/i18n/tr.po12
-rw-r--r--deluge/i18n/uk.po125
-rw-r--r--deluge/i18n/ur.po12
-rw-r--r--deluge/i18n/util.py2
-rw-r--r--deluge/i18n/vi.po12
-rw-r--r--deluge/i18n/zh_CN.po26
-rw-r--r--deluge/i18n/zh_HK.po12
-rw-r--r--deluge/i18n/zh_TW.po12
-rw-r--r--deluge/log.py2
-rw-r--r--deluge/maketorrent.py2
-rw-r--r--deluge/metafile.py413
-rw-r--r--deluge/plugins/AutoAdd/deluge_autoadd/core.py3
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_import24.pngbin1176 -> 1091 bytes
-rw-r--r--deluge/plugins/Blocklist/deluge_blocklist/webui.py1
-rw-r--r--deluge/plugins/Execute/deluge_execute/webui.py1
-rw-r--r--deluge/plugins/Extractor/deluge_extractor/webui.py1
-rw-r--r--deluge/plugins/Label/deluge_label/core.py4
-rw-r--r--deluge/plugins/Label/deluge_label/gtkui/sidebar_menu.py1
-rw-r--r--deluge/plugins/Label/deluge_label/gtkui/submenu.py2
-rw-r--r--deluge/plugins/Notifications/deluge_notifications/webui.py1
-rw-r--r--deluge/plugins/Scheduler/deluge_scheduler/webui.py1
-rw-r--r--deluge/plugins/Stats/deluge_stats/graph.py144
-rw-r--r--deluge/plugins/Stats/deluge_stats/gtkui.py5
-rw-r--r--deluge/plugins/Stats/deluge_stats/tests/test_stats.py9
-rw-r--r--deluge/plugins/Stats/deluge_stats/webui.py1
-rw-r--r--deluge/plugins/Toggle/deluge_toggle/webui.py1
-rw-r--r--deluge/plugins/WebUi/deluge_webui/tests/test_plugin_webui.py12
-rw-r--r--deluge/plugins/pluginbase.py7
-rwxr-xr-xdeluge/scripts/create_deluge_pngs71
-rwxr-xr-xdeluge/scripts/create_icons.py201
-rw-r--r--deluge/scripts/create_plugin.py1
-rw-r--r--deluge/tests/common_web.py4
-rw-r--r--deluge/tests/daemon_base.py12
-rw-r--r--deluge/tests/data/dir_with_single_file.torrent1
-rw-r--r--deluge/tests/data/v2_hybrid.torrentbin0 -> 613 bytes
-rw-r--r--deluge/tests/data/v2_test.torrentbin0 -> 345 bytes
-rw-r--r--deluge/tests/test_alertmanager.py93
-rw-r--r--deluge/tests/test_client.py22
-rw-r--r--deluge/tests/test_common.py36
-rw-r--r--deluge/tests/test_component.py337
-rw-r--r--deluge/tests/test_config.py3
-rw-r--r--deluge/tests/test_core.py44
-rw-r--r--deluge/tests/test_httpdownloader.py16
-rw-r--r--deluge/tests/test_json_api.py13
-rw-r--r--deluge/tests/test_maybe_coroutine.py6
-rw-r--r--deluge/tests/test_metafile.py55
-rw-r--r--deluge/tests/test_rpcserver.py1
-rw-r--r--deluge/tests/test_security.py5
-rw-r--r--deluge/tests/test_sessionproxy.py6
-rw-r--r--deluge/tests/test_torrent.py37
-rw-r--r--deluge/tests/test_torrentmanager.py2
-rw-r--r--deluge/tests/test_torrentview.py1
-rw-r--r--deluge/tests/test_tracker_icons.py8
-rw-r--r--deluge/tests/test_ui_common.py135
-rw-r--r--deluge/tests/test_ui_entry.py7
-rw-r--r--deluge/tests/test_web_api.py7
-rw-r--r--deluge/tests/test_webserver.py66
-rw-r--r--deluge/ui/client.py26
-rw-r--r--deluge/ui/common.py222
-rw-r--r--deluge/ui/console/__init__.py8
-rw-r--r--deluge/ui/console/cmdline/command.py1
-rw-r--r--deluge/ui/console/console.py1
-rw-r--r--deluge/ui/console/eventlog.py125
-rw-r--r--deluge/ui/console/main.py461
-rw-r--r--deluge/ui/console/modes/basemode.py22
-rw-r--r--deluge/ui/console/modes/connectionmanager.py7
-rw-r--r--deluge/ui/console/modes/torrentdetail.py2
-rw-r--r--deluge/ui/console/modes/torrentlist/torrentactions.py1
-rw-r--r--deluge/ui/console/utils/config.py118
-rw-r--r--deluge/ui/console/widgets/popup.py3
-rw-r--r--deluge/ui/data/icons/hicolor/128x128/apps/deluge.pngbin4365 -> 1536 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/16x16/apps/deluge-panel.pngbin551 -> 418 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/16x16/apps/deluge.pngbin551 -> 418 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/192x192/apps/deluge.pngbin6606 -> 2191 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/22x22/apps/deluge-panel.pngbin778 -> 492 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/22x22/apps/deluge.pngbin778 -> 492 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/24x24/apps/deluge-panel.pngbin877 -> 529 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/24x24/apps/deluge.pngbin877 -> 529 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/256x256/apps/deluge.pngbin8907 -> 2738 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/32x32/apps/deluge.pngbin1126 -> 597 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/36x36/apps/deluge.pngbin1270 -> 656 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/48x48/apps/deluge.pngbin1798 -> 797 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/512x512/apps/deluge.pngbin20135 -> 5090 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/64x64/apps/deluge.pngbin2324 -> 1021 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/72x72/apps/deluge.pngbin2535 -> 1016 bytes
-rw-r--r--deluge/ui/data/icons/hicolor/96x96/apps/deluge.pngbin3323 -> 1268 bytes
-rw-r--r--deluge/ui/data/pixmaps/active16.pngbin505 -> 411 bytes
-rw-r--r--deluge/ui/data/pixmaps/alert16.pngbin462 -> 331 bytes
-rw-r--r--deluge/ui/data/pixmaps/all16.pngbin533 -> 533 bytes
-rw-r--r--deluge/ui/data/pixmaps/checking16.pngbin519 -> 323 bytes
-rw-r--r--deluge/ui/data/pixmaps/deluge-about.pngbin6117 -> 4693 bytes
-rw-r--r--deluge/ui/data/pixmaps/deluge.icobin112928 -> 108469 bytes
-rw-r--r--deluge/ui/data/pixmaps/deluge.pngbin1798 -> 797 bytes
-rw-r--r--deluge/ui/data/pixmaps/deluge16.pngbin552 -> 418 bytes
-rw-r--r--deluge/ui/data/pixmaps/dht16.pngbin582 -> 515 bytes
-rw-r--r--deluge/ui/data/pixmaps/downloading16.pngbin465 -> 356 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ad.pngbin444 -> 439 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ae.pngbin275 -> 273 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/af.pngbin415 -> 412 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ag.pngbin431 -> 430 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/al.pngbin427 -> 422 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/am.pngbin322 -> 319 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/an.pngbin359 -> 353 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ao.pngbin381 -> 377 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/aq.pngbin582 -> 580 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ar.pngbin354 -> 352 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/as.pngbin514 -> 511 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/at.pngbin286 -> 284 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/au.pngbin554 -> 552 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/aw.pngbin376 -> 375 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ax.pngbin470 -> 463 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/az.pngbin411 -> 410 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ba.pngbin449 -> 447 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bd.pngbin355 -> 349 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bf.pngbin333 -> 332 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bh.pngbin331 -> 329 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bi.pngbin548 -> 529 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bj.pngbin307 -> 304 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bm.pngbin475 -> 472 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bn.pngbin486 -> 472 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bo.pngbin335 -> 332 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bs.pngbin386 -> 380 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bt.pngbin460 -> 452 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bv.pngbin380 -> 378 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bw.pngbin313 -> 311 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/by.pngbin365 -> 361 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/bz.pngbin457 -> 455 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ca.pngbin459 -> 455 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cc.pngbin480 -> 472 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cf.pngbin443 -> 437 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cg.pngbin366 -> 363 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ci.pngbin300 -> 296 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ck.pngbin474 -> 463 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cl.pngbin316 -> 313 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cm.pngbin335 -> 333 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cn.pngbin339 -> 338 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/co.pngbin322 -> 321 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cr.pngbin339 -> 336 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cu.pngbin416 -> 415 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cv.pngbin403 -> 401 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cx.pngbin459 -> 456 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/cy.pngbin318 -> 312 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/de.pngbin353 -> 351 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/dj.pngbin411 -> 410 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/dk.pngbin342 -> 340 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/dm.pngbin488 -> 483 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/do.pngbin361 -> 360 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/dz.pngbin442 -> 437 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ec.pngbin345 -> 340 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/eg.pngbin344 -> 334 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/eh.pngbin377 -> 375 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/er.pngbin480 -> 473 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/es.pngbin336 -> 333 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/et.pngbin424 -> 421 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/fi.pngbin355 -> 352 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/fj.pngbin485 -> 484 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/fo.pngbin367 -> 362 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/fr.pngbin363 -> 362 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ga.pngbin331 -> 330 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gb.pngbin526 -> 525 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gd.pngbin446 -> 441 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ge.pngbin468 -> 460 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gf.pngbin363 -> 362 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gg.pngbin445 -> 442 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gh.pngbin320 -> 318 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gi.pngbin354 -> 352 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gl.pngbin337 -> 335 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gn.pngbin309 -> 305 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gp.pngbin343 -> 339 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gq.pngbin391 -> 387 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gr.pngbin377 -> 373 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gt.pngbin327 -> 320 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gu.pngbin366 -> 363 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gw.pngbin339 -> 337 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/gy.pngbin500 -> 495 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/hk.pngbin380 -> 375 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/hm.pngbin554 -> 552 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/hn.pngbin394 -> 391 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/hr.pngbin368 -> 363 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ht.pngbin319 -> 316 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/id.pngbin291 -> 286 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/in.pngbin360 -> 357 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/iq.pngbin391 -> 382 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ir.pngbin385 -> 378 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/is.pngbin395 -> 393 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/it.pngbin277 -> 276 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/jp.pngbin299 -> 296 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ke.pngbin423 -> 416 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kg.pngbin341 -> 339 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kh.pngbin409 -> 404 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/km.pngbin432 -> 427 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kp.pngbin409 -> 408 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kr.pngbin484 -> 476 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kw.pngbin341 -> 339 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ky.pngbin505 -> 501 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/kz.pngbin441 -> 438 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/la.pngbin395 -> 391 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lb.pngbin374 -> 370 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lc.pngbin454 -> 450 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/li.pngbin382 -> 378 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lk.pngbin454 -> 451 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lr.pngbin356 -> 353 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ls.pngbin480 -> 477 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lt.pngbin336 -> 331 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lu.pngbin320 -> 318 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/lv.pngbin329 -> 326 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ly.pngbin269 -> 268 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ma.pngbin286 -> 285 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mc.pngbin251 -> 247 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/md.pngbin393 -> 392 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/me.pngbin371 -> 369 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mg.pngbin304 -> 301 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mh.pngbin500 -> 492 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mk.pngbin433 -> 430 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ml.pngbin314 -> 309 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mm.pngbin334 -> 330 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mn.pngbin328 -> 326 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mo.pngbin440 -> 431 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mp.pngbin460 -> 457 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mq.pngbin524 -> 522 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mr.pngbin398 -> 393 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ms.pngbin472 -> 467 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mu.pngbin350 -> 347 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mv.pngbin385 -> 381 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mw.pngbin356 -> 353 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mx.pngbin409 -> 406 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/my.pngbin453 -> 451 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/mz.pngbin418 -> 413 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/na.pngbin531 -> 526 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/nc.pngbin450 -> 444 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ne.pngbin370 -> 365 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ng.pngbin334 -> 332 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ni.pngbin358 -> 355 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/nl.pngbin300 -> 297 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/no.pngbin380 -> 378 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/np.pngbin330 -> 322 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/nr.pngbin376 -> 373 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/nu.pngbin449 -> 443 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/nz.pngbin500 -> 495 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/om.pngbin334 -> 331 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pa.pngbin379 -> 375 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pf.pngbin373 -> 367 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pg.pngbin414 -> 409 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ph.pngbin406 -> 398 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pk.pngbin439 -> 434 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pl.pngbin236 -> 235 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pm.pngbin552 -> 543 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pr.pngbin420 -> 418 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ps.pngbin334 -> 333 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pt.pngbin391 -> 387 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/pw.pngbin403 -> 398 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/py.pngbin334 -> 333 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/qa.pngbin325 -> 320 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/re.pngbin363 -> 362 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ro.pngbin322 -> 315 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/rs.pngbin362 -> 357 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/rw.pngbin365 -> 361 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sa.pngbin418 -> 415 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sc.pngbin464 -> 457 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sd.pngbin349 -> 343 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/se.pngbin374 -> 373 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sg.pngbin338 -> 330 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sh.pngbin498 -> 495 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/si.pngbin370 -> 367 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sj.pngbin380 -> 378 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sk.pngbin419 -> 417 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sl.pngbin311 -> 308 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sn.pngbin351 -> 347 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/so.pngbin366 -> 361 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sr.pngbin360 -> 359 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/st.pngbin415 -> 409 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sv.pngbin357 -> 356 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sy.pngbin312 -> 311 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/sz.pngbin486 -> 481 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tc.pngbin485 -> 484 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/td.pngbin370 -> 369 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tf.pngbin386 -> 379 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/th.pngbin324 -> 317 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tj.pngbin353 -> 351 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tl.pngbin377 -> 373 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tm.pngbin438 -> 431 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tn.pngbin358 -> 352 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/to.pngbin292 -> 290 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tp.pngbin445 -> 443 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tr.pngbin358 -> 356 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tt.pngbin460 -> 456 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/tz.pngbin488 -> 485 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ua.pngbin297 -> 294 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ug.pngbin374 -> 372 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/um.pngbin443 -> 442 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/us.pngbin455 -> 452 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/uy.pngbin396 -> 394 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/uz.pngbin390 -> 386 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/va.pngbin401 -> 396 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/vc.pngbin398 -> 397 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ve.pngbin384 -> 383 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/vg.pngbin485 -> 482 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/vi.pngbin503 -> 498 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/vn.pngbin310 -> 307 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/vu.pngbin423 -> 420 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/wf.pngbin429 -> 422 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ws.pngbin346 -> 342 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/ye.pngbin289 -> 287 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/yt.pngbin446 -> 439 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/yu.pngbin385 -> 378 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/za.pngbin497 -> 493 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/zm.pngbin349 -> 348 bytes
-rw-r--r--deluge/ui/data/pixmaps/flags/zw.pngbin440 -> 435 bytes
-rw-r--r--deluge/ui/data/pixmaps/inactive16.pngbin434 -> 283 bytes
-rw-r--r--deluge/ui/data/pixmaps/magnet16.pngbin303 -> 345 bytes
-rw-r--r--deluge/ui/data/pixmaps/magnet_add16.pngbin392 -> 414 bytes
-rw-r--r--deluge/ui/data/pixmaps/magnet_copy16.pngbin446 -> 469 bytes
-rw-r--r--deluge/ui/data/pixmaps/queued16.pngbin410 -> 341 bytes
-rw-r--r--deluge/ui/data/pixmaps/seeding16.pngbin505 -> 332 bytes
-rw-r--r--deluge/ui/data/pixmaps/tracker_all16.pngbin1097 -> 1022 bytes
-rw-r--r--deluge/ui/data/pixmaps/tracker_warning16.pngbin683 -> 626 bytes
-rw-r--r--deluge/ui/data/pixmaps/traffic16.pngbin394 -> 359 bytes
-rw-r--r--deluge/ui/data/share/metainfo/deluge.metainfo.xml.in (renamed from deluge/ui/data/share/appdata/deluge.appdata.xml.in)0
-rw-r--r--deluge/ui/gtk3/__init__.py1
-rw-r--r--deluge/ui/gtk3/addtorrentdialog.py25
-rw-r--r--deluge/ui/gtk3/files_tab.py3
-rw-r--r--deluge/ui/gtk3/glade/add_torrent_dialog.ui4
-rw-r--r--deluge/ui/gtk3/glade/main_window.ui40
-rw-r--r--deluge/ui/gtk3/glade/preferences_dialog.ui48
-rw-r--r--deluge/ui/gtk3/gtkui.py3
-rw-r--r--deluge/ui/gtk3/listview.py2
-rw-r--r--deluge/ui/gtk3/mainwindow.py7
-rw-r--r--deluge/ui/gtk3/menubar.py60
-rw-r--r--deluge/ui/gtk3/menubar_osx.py54
-rwxr-xr-xdeluge/ui/gtk3/path_combo_chooser.py2
-rw-r--r--deluge/ui/gtk3/peers_tab.py2
-rw-r--r--deluge/ui/gtk3/piecesbar.py88
-rw-r--r--deluge/ui/gtk3/preferences.py31
-rw-r--r--deluge/ui/gtk3/systemtray.py1
-rw-r--r--deluge/ui/hostlist.py2
-rw-r--r--deluge/ui/sessionproxy.py1
-rw-r--r--deluge/ui/web/docs/template/resources/deluge.pngbin722 -> 641 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/form.pngbin478 -> 444 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/hmenu-lock.pngbin648 -> 588 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/grid/hmenu-unlock.pngbin697 -> 650 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/panel/top-bottom.pngbin218 -> 216 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shadow-c.pngbin118 -> 108 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shadow-lr.pngbin135 -> 125 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/shadow.pngbin311 -> 260 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/slider/slider-bg.pngbin300 -> 288 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/slider/slider-thumb.pngbin933 -> 731 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/slider/slider-v-bg.pngbin288 -> 273 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/slider/slider-v-thumb.pngbin883 -> 688 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/tabs/tab-strip-bg.pngbin259 -> 207 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/left-corners.pngbin272 -> 247 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/left-right.pngbin135 -> 123 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/right-corners.pngbin340 -> 300 bytes
-rw-r--r--deluge/ui/web/docs/template/resources/images/default/window/top-bottom.pngbin211 -> 199 bytes
-rw-r--r--deluge/ui/web/icons/active.pngbin505 -> 411 bytes
-rw-r--r--deluge/ui/web/icons/add.pngbin358 -> 337 bytes
-rw-r--r--deluge/ui/web/icons/add_file.pngbin520 -> 506 bytes
-rw-r--r--deluge/ui/web/icons/add_url.pngbin815 -> 806 bytes
-rw-r--r--deluge/ui/web/icons/alert.pngbin462 -> 331 bytes
-rw-r--r--deluge/ui/web/icons/all.pngbin533 -> 533 bytes
-rw-r--r--deluge/ui/web/icons/back.pngbin443 -> 420 bytes
-rw-r--r--deluge/ui/web/icons/bottom.pngbin346 -> 332 bytes
-rw-r--r--deluge/ui/web/icons/checking.pngbin519 -> 323 bytes
-rw-r--r--deluge/ui/web/icons/connection_manager.pngbin464 -> 463 bytes
-rw-r--r--deluge/ui/web/icons/connections.pngbin560 -> 543 bytes
-rw-r--r--deluge/ui/web/icons/create.pngbin541 -> 528 bytes
-rw-r--r--deluge/ui/web/icons/deluge-192.pngbin6604 -> 2191 bytes
-rw-r--r--deluge/ui/web/icons/deluge-32.pngbin1126 -> 597 bytes
-rw-r--r--deluge/ui/web/icons/deluge-512.pngbin20126 -> 5090 bytes
-rw-r--r--deluge/ui/web/icons/deluge-apple-180.pngbin5367 -> 1984 bytes
-rw-r--r--deluge/ui/web/icons/deluge.pngbin552 -> 418 bytes
-rw-r--r--deluge/ui/web/icons/dht.pngbin582 -> 515 bytes
-rw-r--r--deluge/ui/web/icons/document.pngbin406 -> 381 bytes
-rw-r--r--deluge/ui/web/icons/down.pngbin427 -> 408 bytes
-rw-r--r--deluge/ui/web/icons/downloading.pngbin465 -> 356 bytes
-rw-r--r--deluge/ui/web/icons/drive.pngbin381 -> 356 bytes
-rw-r--r--deluge/ui/web/icons/edit_trackers.pngbin589 -> 578 bytes
-rw-r--r--deluge/ui/web/icons/error.pngbin730 -> 727 bytes
-rw-r--r--deluge/ui/web/icons/expand_all.pngbin612 -> 582 bytes
-rw-r--r--deluge/ui/web/icons/favicon.icobin15086 -> 15086 bytes
-rw-r--r--deluge/ui/web/icons/find_more.pngbin557 -> 532 bytes
-rw-r--r--deluge/ui/web/icons/forward.pngbin436 -> 419 bytes
-rw-r--r--deluge/ui/web/icons/help.pngbin772 -> 767 bytes
-rw-r--r--deluge/ui/web/icons/high.pngbin505 -> 495 bytes
-rw-r--r--deluge/ui/web/icons/home.pngbin550 -> 533 bytes
-rw-r--r--deluge/ui/web/icons/inactive.pngbin434 -> 283 bytes
-rw-r--r--deluge/ui/web/icons/install_plugin.pngbin674 -> 671 bytes
-rw-r--r--deluge/ui/web/icons/login.pngbin469 -> 460 bytes
-rw-r--r--deluge/ui/web/icons/logout.pngbin599 -> 588 bytes
-rw-r--r--deluge/ui/web/icons/low.pngbin358 -> 344 bytes
-rw-r--r--deluge/ui/web/icons/magnet.pngbin303 -> 345 bytes
-rw-r--r--deluge/ui/web/icons/magnet_add.pngbin392 -> 414 bytes
-rw-r--r--deluge/ui/web/icons/magnet_copy.pngbin446 -> 469 bytes
-rw-r--r--deluge/ui/web/icons/move.pngbin524 -> 511 bytes
-rw-r--r--deluge/ui/web/icons/no_download.pngbin581 -> 569 bytes
-rw-r--r--deluge/ui/web/icons/normal.pngbin436 -> 419 bytes
-rw-r--r--deluge/ui/web/icons/ok.pngbin766 -> 760 bytes
-rw-r--r--deluge/ui/web/icons/pause.pngbin331 -> 301 bytes
-rw-r--r--deluge/ui/web/icons/preferences.pngbin694 -> 676 bytes
-rw-r--r--deluge/ui/web/icons/queue.pngbin432 -> 413 bytes
-rw-r--r--deluge/ui/web/icons/queued.pngbin410 -> 341 bytes
-rw-r--r--deluge/ui/web/icons/recheck.pngbin557 -> 532 bytes
-rw-r--r--deluge/ui/web/icons/remove.pngbin194 -> 189 bytes
-rw-r--r--deluge/ui/web/icons/seeding.pngbin505 -> 332 bytes
-rw-r--r--deluge/ui/web/icons/start.pngbin358 -> 344 bytes
-rw-r--r--deluge/ui/web/icons/top.pngbin325 -> 303 bytes
-rw-r--r--deluge/ui/web/icons/traffic.pngbin394 -> 359 bytes
-rw-r--r--deluge/ui/web/icons/up.pngbin420 -> 407 bytes
-rw-r--r--deluge/ui/web/icons/update.pngbin675 -> 663 bytes
-rw-r--r--deluge/ui/web/icons/upload_slots.pngbin422 -> 409 bytes
-rw-r--r--deluge/ui/web/icons/warning.pngbin521 -> 510 bytes
-rw-r--r--deluge/ui/web/js/deluge-all/ConnectionManager.js21
-rw-r--r--deluge/ui/web/js/deluge-all/Sidebar.js18
-rw-r--r--deluge/ui/web/js/deluge-all/TorrentGrid.js2
-rw-r--r--deluge/ui/web/js/deluge-all/UI.js31
-rw-r--r--deluge/ui/web/js/deluge-all/details/FilesTab.js4
-rw-r--r--deluge/ui/web/js/deluge-all/details/OptionsTab.js4
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/BandwidthPage.js2
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/DaemonPage.js2
-rw-r--r--deluge/ui/web/js/deluge-all/preferences/InterfacePage.js56
-rw-r--r--deluge/ui/web/json_api.py25
-rw-r--r--deluge/ui/web/server.py103
-rw-r--r--deluge/ui/web/themes/images/access/grid/hmenu-lock.pngbin484 -> 477 bytes
-rw-r--r--deluge/ui/web/themes/images/access/grid/hmenu-unlock.pngbin548 -> 539 bytes
-rw-r--r--deluge/ui/web/themes/images/access/slider/slider-bg.pngbin185 -> 169 bytes
-rw-r--r--deluge/ui/web/themes/images/access/slider/slider-thumb.pngbin512 -> 500 bytes
-rw-r--r--deluge/ui/web/themes/images/access/slider/slider-v-thumb.pngbin481 -> 478 bytes
-rw-r--r--deluge/ui/web/themes/images/access/window/right-corners.pngbin138 -> 137 bytes
-rw-r--r--deluge/ui/web/themes/images/access/window/top-bottom.pngbin105 -> 104 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/hmenu-lock.pngbin484 -> 477 bytes
-rw-r--r--deluge/ui/web/themes/images/default/grid/hmenu-unlock.pngbin548 -> 539 bytes
-rw-r--r--deluge/ui/web/themes/images/default/slider/slider-bg.pngbin191 -> 176 bytes
-rw-r--r--deluge/ui/web/themes/images/default/slider/slider-thumb.pngbin626 -> 619 bytes
-rw-r--r--deluge/ui/web/themes/images/default/slider/slider-v-thumb.pngbin601 -> 576 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/right-corners.pngbin138 -> 137 bytes
-rw-r--r--deluge/ui/web/themes/images/default/window/top-bottom.pngbin119 -> 116 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/slider/slider-thumb.pngbin376 -> 348 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/window/left-corners.pngbin205 -> 201 bytes
-rw-r--r--deluge/ui/web/themes/images/gray/window/right-corners.pngbin204 -> 202 bytes
-rw-r--r--deluge/ui/web/web.py1
-rw-r--r--docs/requirements.txt10
-rw-r--r--docs/source/intro/01-install.md15
-rwxr-xr-xgenerate_pot.py6
-rw-r--r--packaging/win/deluge-win-installer.nsi3
-rw-r--r--pyproject.toml26
-rw-r--r--requirements-ci.txt4
-rw-r--r--requirements-tests.txt2
-rw-r--r--requirements.txt3
-rwxr-xr-xsetup.py10
-rw-r--r--tox.ini15
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
index 9441214cb..f1a02e756 100644
--- a/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_import24.png
+++ b/deluge/plugins/Blocklist/deluge_blocklist/data/blocklist_import24.png
Binary files differ
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
new file mode 100644
index 000000000..e58057cc2
--- /dev/null
+++ b/deluge/tests/data/v2_hybrid.torrent
Binary files differ
diff --git a/deluge/tests/data/v2_test.torrent b/deluge/tests/data/v2_test.torrent
new file mode 100644
index 000000000..fe6cbd044
--- /dev/null
+++ b/deluge/tests/data/v2_test.torrent
Binary files differ
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
index 48fcc473e..32aa26ae2 100644
--- a/deluge/ui/data/icons/hicolor/128x128/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/128x128/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/16x16/apps/deluge-panel.png b/deluge/ui/data/icons/hicolor/16x16/apps/deluge-panel.png
index 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
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/16x16/apps/deluge.png b/deluge/ui/data/icons/hicolor/16x16/apps/deluge.png
index 2f4ae4c70..1291dfaeb 100644
--- a/deluge/ui/data/icons/hicolor/16x16/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/16x16/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/192x192/apps/deluge.png b/deluge/ui/data/icons/hicolor/192x192/apps/deluge.png
index 5d54ea41e..93c6feb44 100644
--- a/deluge/ui/data/icons/hicolor/192x192/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/192x192/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/22x22/apps/deluge-panel.png b/deluge/ui/data/icons/hicolor/22x22/apps/deluge-panel.png
index 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
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/22x22/apps/deluge.png b/deluge/ui/data/icons/hicolor/22x22/apps/deluge.png
index 13fe852ad..95b13e359 100644
--- a/deluge/ui/data/icons/hicolor/22x22/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/22x22/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/24x24/apps/deluge-panel.png b/deluge/ui/data/icons/hicolor/24x24/apps/deluge-panel.png
index 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
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/24x24/apps/deluge.png b/deluge/ui/data/icons/hicolor/24x24/apps/deluge.png
index 3a345eb44..96ab75325 100644
--- a/deluge/ui/data/icons/hicolor/24x24/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/24x24/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/256x256/apps/deluge.png b/deluge/ui/data/icons/hicolor/256x256/apps/deluge.png
index ee5d2909b..4ba3bb997 100644
--- a/deluge/ui/data/icons/hicolor/256x256/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/256x256/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/32x32/apps/deluge.png b/deluge/ui/data/icons/hicolor/32x32/apps/deluge.png
index 6787fa39a..916f13632 100644
--- a/deluge/ui/data/icons/hicolor/32x32/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/32x32/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/36x36/apps/deluge.png b/deluge/ui/data/icons/hicolor/36x36/apps/deluge.png
index 4050041f5..92d35fa0f 100644
--- a/deluge/ui/data/icons/hicolor/36x36/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/36x36/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/48x48/apps/deluge.png b/deluge/ui/data/icons/hicolor/48x48/apps/deluge.png
index 7b067ac94..95592bb49 100644
--- a/deluge/ui/data/icons/hicolor/48x48/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/48x48/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/512x512/apps/deluge.png b/deluge/ui/data/icons/hicolor/512x512/apps/deluge.png
index 70cd91af5..464dd69f5 100644
--- a/deluge/ui/data/icons/hicolor/512x512/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/512x512/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/64x64/apps/deluge.png b/deluge/ui/data/icons/hicolor/64x64/apps/deluge.png
index 427556373..fb87321a5 100644
--- a/deluge/ui/data/icons/hicolor/64x64/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/64x64/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/72x72/apps/deluge.png b/deluge/ui/data/icons/hicolor/72x72/apps/deluge.png
index 7ba0efb1c..f313ed32c 100644
--- a/deluge/ui/data/icons/hicolor/72x72/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/72x72/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/icons/hicolor/96x96/apps/deluge.png b/deluge/ui/data/icons/hicolor/96x96/apps/deluge.png
index 2c64ec8b9..9b8d3abfe 100644
--- a/deluge/ui/data/icons/hicolor/96x96/apps/deluge.png
+++ b/deluge/ui/data/icons/hicolor/96x96/apps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/active16.png b/deluge/ui/data/pixmaps/active16.png
index c9af82a5f..e5bab66cd 100644
--- a/deluge/ui/data/pixmaps/active16.png
+++ b/deluge/ui/data/pixmaps/active16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/alert16.png b/deluge/ui/data/pixmaps/alert16.png
index 703663813..49028db9c 100644
--- a/deluge/ui/data/pixmaps/alert16.png
+++ b/deluge/ui/data/pixmaps/alert16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/all16.png b/deluge/ui/data/pixmaps/all16.png
index c63f8df1a..1a9ba9092 100644
--- a/deluge/ui/data/pixmaps/all16.png
+++ b/deluge/ui/data/pixmaps/all16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/checking16.png b/deluge/ui/data/pixmaps/checking16.png
index 6758e36e8..9961675c4 100644
--- a/deluge/ui/data/pixmaps/checking16.png
+++ b/deluge/ui/data/pixmaps/checking16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/deluge-about.png b/deluge/ui/data/pixmaps/deluge-about.png
index 39322eb71..0b4ff4e6b 100644
--- a/deluge/ui/data/pixmaps/deluge-about.png
+++ b/deluge/ui/data/pixmaps/deluge-about.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/deluge.ico b/deluge/ui/data/pixmaps/deluge.ico
index d946d1114..854f867a5 100644
--- a/deluge/ui/data/pixmaps/deluge.ico
+++ b/deluge/ui/data/pixmaps/deluge.ico
Binary files differ
diff --git a/deluge/ui/data/pixmaps/deluge.png b/deluge/ui/data/pixmaps/deluge.png
index 7b067ac94..95592bb49 100644
--- a/deluge/ui/data/pixmaps/deluge.png
+++ b/deluge/ui/data/pixmaps/deluge.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/deluge16.png b/deluge/ui/data/pixmaps/deluge16.png
index 5afdbe4c6..1291dfaeb 100644
--- a/deluge/ui/data/pixmaps/deluge16.png
+++ b/deluge/ui/data/pixmaps/deluge16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/dht16.png b/deluge/ui/data/pixmaps/dht16.png
index 363ee0c0f..2396bb132 100644
--- a/deluge/ui/data/pixmaps/dht16.png
+++ b/deluge/ui/data/pixmaps/dht16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/downloading16.png b/deluge/ui/data/pixmaps/downloading16.png
index 24d6ffa38..e64aa5adc 100644
--- a/deluge/ui/data/pixmaps/downloading16.png
+++ b/deluge/ui/data/pixmaps/downloading16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ad.png b/deluge/ui/data/pixmaps/flags/ad.png
index 93656aa35..cc5ab1e13 100644
--- a/deluge/ui/data/pixmaps/flags/ad.png
+++ b/deluge/ui/data/pixmaps/flags/ad.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ae.png b/deluge/ui/data/pixmaps/flags/ae.png
index e3abee163..590256f8a 100644
--- a/deluge/ui/data/pixmaps/flags/ae.png
+++ b/deluge/ui/data/pixmaps/flags/ae.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/af.png b/deluge/ui/data/pixmaps/flags/af.png
index 8506736ad..d8faed3c9 100644
--- a/deluge/ui/data/pixmaps/flags/af.png
+++ b/deluge/ui/data/pixmaps/flags/af.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ag.png b/deluge/ui/data/pixmaps/flags/ag.png
index ba1aff986..7c6d7dbab 100644
--- a/deluge/ui/data/pixmaps/flags/ag.png
+++ b/deluge/ui/data/pixmaps/flags/ag.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/al.png b/deluge/ui/data/pixmaps/flags/al.png
index 9b56fcba0..71f9d0aae 100644
--- a/deluge/ui/data/pixmaps/flags/al.png
+++ b/deluge/ui/data/pixmaps/flags/al.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/am.png b/deluge/ui/data/pixmaps/flags/am.png
index 83ac72eb3..8bc88a26e 100644
--- a/deluge/ui/data/pixmaps/flags/am.png
+++ b/deluge/ui/data/pixmaps/flags/am.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/an.png b/deluge/ui/data/pixmaps/flags/an.png
index 09cfdb128..49220a4c9 100644
--- a/deluge/ui/data/pixmaps/flags/an.png
+++ b/deluge/ui/data/pixmaps/flags/an.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ao.png b/deluge/ui/data/pixmaps/flags/ao.png
index c2004d618..9f1dcb46a 100644
--- a/deluge/ui/data/pixmaps/flags/ao.png
+++ b/deluge/ui/data/pixmaps/flags/ao.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/aq.png b/deluge/ui/data/pixmaps/flags/aq.png
index 76fe736cb..de9bc8f2c 100644
--- a/deluge/ui/data/pixmaps/flags/aq.png
+++ b/deluge/ui/data/pixmaps/flags/aq.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ar.png b/deluge/ui/data/pixmaps/flags/ar.png
index f16a290b7..e3a87c893 100644
--- a/deluge/ui/data/pixmaps/flags/ar.png
+++ b/deluge/ui/data/pixmaps/flags/ar.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/as.png b/deluge/ui/data/pixmaps/flags/as.png
index e38ce4323..1d00ab05a 100644
--- a/deluge/ui/data/pixmaps/flags/as.png
+++ b/deluge/ui/data/pixmaps/flags/as.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/at.png b/deluge/ui/data/pixmaps/flags/at.png
index 25c7e421f..475bd128e 100644
--- a/deluge/ui/data/pixmaps/flags/at.png
+++ b/deluge/ui/data/pixmaps/flags/at.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/au.png b/deluge/ui/data/pixmaps/flags/au.png
index 0de18f0b2..0335dbfc8 100644
--- a/deluge/ui/data/pixmaps/flags/au.png
+++ b/deluge/ui/data/pixmaps/flags/au.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/aw.png b/deluge/ui/data/pixmaps/flags/aw.png
index 788d7385c..fc58befc3 100644
--- a/deluge/ui/data/pixmaps/flags/aw.png
+++ b/deluge/ui/data/pixmaps/flags/aw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ax.png b/deluge/ui/data/pixmaps/flags/ax.png
index 0060c3566..134b2ac51 100644
--- a/deluge/ui/data/pixmaps/flags/ax.png
+++ b/deluge/ui/data/pixmaps/flags/ax.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/az.png b/deluge/ui/data/pixmaps/flags/az.png
index cb9c9a171..e225bd227 100644
--- a/deluge/ui/data/pixmaps/flags/az.png
+++ b/deluge/ui/data/pixmaps/flags/az.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ba.png b/deluge/ui/data/pixmaps/flags/ba.png
index 160c5e2ab..bc8732550 100644
--- a/deluge/ui/data/pixmaps/flags/ba.png
+++ b/deluge/ui/data/pixmaps/flags/ba.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bd.png b/deluge/ui/data/pixmaps/flags/bd.png
index 10266cd50..23fea0e64 100644
--- a/deluge/ui/data/pixmaps/flags/bd.png
+++ b/deluge/ui/data/pixmaps/flags/bd.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bf.png b/deluge/ui/data/pixmaps/flags/bf.png
index 452329a01..aa7238bce 100644
--- a/deluge/ui/data/pixmaps/flags/bf.png
+++ b/deluge/ui/data/pixmaps/flags/bf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bh.png b/deluge/ui/data/pixmaps/flags/bh.png
index 1b876e211..812126b66 100644
--- a/deluge/ui/data/pixmaps/flags/bh.png
+++ b/deluge/ui/data/pixmaps/flags/bh.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bi.png b/deluge/ui/data/pixmaps/flags/bi.png
index f4d9adf92..21ead6b8d 100644
--- a/deluge/ui/data/pixmaps/flags/bi.png
+++ b/deluge/ui/data/pixmaps/flags/bi.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bj.png b/deluge/ui/data/pixmaps/flags/bj.png
index 5740ccc5d..6b9a53899 100644
--- a/deluge/ui/data/pixmaps/flags/bj.png
+++ b/deluge/ui/data/pixmaps/flags/bj.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bm.png b/deluge/ui/data/pixmaps/flags/bm.png
index 85411bff3..c1859d1d7 100644
--- a/deluge/ui/data/pixmaps/flags/bm.png
+++ b/deluge/ui/data/pixmaps/flags/bm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bn.png b/deluge/ui/data/pixmaps/flags/bn.png
index a0c223f48..a18d496f0 100644
--- a/deluge/ui/data/pixmaps/flags/bn.png
+++ b/deluge/ui/data/pixmaps/flags/bn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bo.png b/deluge/ui/data/pixmaps/flags/bo.png
index c2ef0f42f..1b25cd93f 100644
--- a/deluge/ui/data/pixmaps/flags/bo.png
+++ b/deluge/ui/data/pixmaps/flags/bo.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bs.png b/deluge/ui/data/pixmaps/flags/bs.png
index 959252d65..dec86f3ac 100644
--- a/deluge/ui/data/pixmaps/flags/bs.png
+++ b/deluge/ui/data/pixmaps/flags/bs.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bt.png b/deluge/ui/data/pixmaps/flags/bt.png
index 2e1969652..3942fc987 100644
--- a/deluge/ui/data/pixmaps/flags/bt.png
+++ b/deluge/ui/data/pixmaps/flags/bt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bv.png b/deluge/ui/data/pixmaps/flags/bv.png
index ae9060caf..faaa529d1 100644
--- a/deluge/ui/data/pixmaps/flags/bv.png
+++ b/deluge/ui/data/pixmaps/flags/bv.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bw.png b/deluge/ui/data/pixmaps/flags/bw.png
index 2dee7fb3c..d5e0284e4 100644
--- a/deluge/ui/data/pixmaps/flags/bw.png
+++ b/deluge/ui/data/pixmaps/flags/bw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/by.png b/deluge/ui/data/pixmaps/flags/by.png
index 29361d693..a6c5f6c16 100644
--- a/deluge/ui/data/pixmaps/flags/by.png
+++ b/deluge/ui/data/pixmaps/flags/by.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/bz.png b/deluge/ui/data/pixmaps/flags/bz.png
index 88e4ea1b3..63f74285a 100644
--- a/deluge/ui/data/pixmaps/flags/bz.png
+++ b/deluge/ui/data/pixmaps/flags/bz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ca.png b/deluge/ui/data/pixmaps/flags/ca.png
index 155eea8ce..1e53d20a9 100644
--- a/deluge/ui/data/pixmaps/flags/ca.png
+++ b/deluge/ui/data/pixmaps/flags/ca.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cc.png b/deluge/ui/data/pixmaps/flags/cc.png
index 93509ae3a..a518e487d 100644
--- a/deluge/ui/data/pixmaps/flags/cc.png
+++ b/deluge/ui/data/pixmaps/flags/cc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cf.png b/deluge/ui/data/pixmaps/flags/cf.png
index 3951b789f..1b9ea85bd 100644
--- a/deluge/ui/data/pixmaps/flags/cf.png
+++ b/deluge/ui/data/pixmaps/flags/cf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cg.png b/deluge/ui/data/pixmaps/flags/cg.png
index 6f32484ff..45422bba1 100644
--- a/deluge/ui/data/pixmaps/flags/cg.png
+++ b/deluge/ui/data/pixmaps/flags/cg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ci.png b/deluge/ui/data/pixmaps/flags/ci.png
index ee1740685..5f670c7ec 100644
--- a/deluge/ui/data/pixmaps/flags/ci.png
+++ b/deluge/ui/data/pixmaps/flags/ci.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ck.png b/deluge/ui/data/pixmaps/flags/ck.png
index 043a12f7a..904192b4d 100644
--- a/deluge/ui/data/pixmaps/flags/ck.png
+++ b/deluge/ui/data/pixmaps/flags/ck.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cl.png b/deluge/ui/data/pixmaps/flags/cl.png
index 6c05438c1..afb270e7a 100644
--- a/deluge/ui/data/pixmaps/flags/cl.png
+++ b/deluge/ui/data/pixmaps/flags/cl.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cm.png b/deluge/ui/data/pixmaps/flags/cm.png
index e2a7c0a14..395dd9fac 100644
--- a/deluge/ui/data/pixmaps/flags/cm.png
+++ b/deluge/ui/data/pixmaps/flags/cm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cn.png b/deluge/ui/data/pixmaps/flags/cn.png
index 5a893ee6b..28ab66c84 100644
--- a/deluge/ui/data/pixmaps/flags/cn.png
+++ b/deluge/ui/data/pixmaps/flags/cn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/co.png b/deluge/ui/data/pixmaps/flags/co.png
index 24eb981b0..d31a69d36 100644
--- a/deluge/ui/data/pixmaps/flags/co.png
+++ b/deluge/ui/data/pixmaps/flags/co.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cr.png b/deluge/ui/data/pixmaps/flags/cr.png
index 4efd96730..e892b41c0 100644
--- a/deluge/ui/data/pixmaps/flags/cr.png
+++ b/deluge/ui/data/pixmaps/flags/cr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cu.png b/deluge/ui/data/pixmaps/flags/cu.png
index addfb8e73..64205edc3 100644
--- a/deluge/ui/data/pixmaps/flags/cu.png
+++ b/deluge/ui/data/pixmaps/flags/cu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cv.png b/deluge/ui/data/pixmaps/flags/cv.png
index 6411a6279..54f1abdca 100644
--- a/deluge/ui/data/pixmaps/flags/cv.png
+++ b/deluge/ui/data/pixmaps/flags/cv.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cx.png b/deluge/ui/data/pixmaps/flags/cx.png
index 75c8bfaed..198e299e1 100644
--- a/deluge/ui/data/pixmaps/flags/cx.png
+++ b/deluge/ui/data/pixmaps/flags/cx.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/cy.png b/deluge/ui/data/pixmaps/flags/cy.png
index bbacfbe0c..6993e6b6b 100644
--- a/deluge/ui/data/pixmaps/flags/cy.png
+++ b/deluge/ui/data/pixmaps/flags/cy.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/de.png b/deluge/ui/data/pixmaps/flags/de.png
index 933014a30..3d078604c 100644
--- a/deluge/ui/data/pixmaps/flags/de.png
+++ b/deluge/ui/data/pixmaps/flags/de.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/dj.png b/deluge/ui/data/pixmaps/flags/dj.png
index 883343a4a..ca361d0bd 100644
--- a/deluge/ui/data/pixmaps/flags/dj.png
+++ b/deluge/ui/data/pixmaps/flags/dj.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/dk.png b/deluge/ui/data/pixmaps/flags/dk.png
index 408eea295..3b4d12d94 100644
--- a/deluge/ui/data/pixmaps/flags/dk.png
+++ b/deluge/ui/data/pixmaps/flags/dk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/dm.png b/deluge/ui/data/pixmaps/flags/dm.png
index e7671bc4b..2767c49bc 100644
--- a/deluge/ui/data/pixmaps/flags/dm.png
+++ b/deluge/ui/data/pixmaps/flags/dm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/do.png b/deluge/ui/data/pixmaps/flags/do.png
index deefc7724..df9b90d33 100644
--- a/deluge/ui/data/pixmaps/flags/do.png
+++ b/deluge/ui/data/pixmaps/flags/do.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/dz.png b/deluge/ui/data/pixmaps/flags/dz.png
index 65028f9b5..a450eeffe 100644
--- a/deluge/ui/data/pixmaps/flags/dz.png
+++ b/deluge/ui/data/pixmaps/flags/dz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ec.png b/deluge/ui/data/pixmaps/flags/ec.png
index 7f93b49f5..26b50cdb4 100644
--- a/deluge/ui/data/pixmaps/flags/ec.png
+++ b/deluge/ui/data/pixmaps/flags/ec.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/eg.png b/deluge/ui/data/pixmaps/flags/eg.png
index 7219431c1..26e80b9f5 100644
--- a/deluge/ui/data/pixmaps/flags/eg.png
+++ b/deluge/ui/data/pixmaps/flags/eg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/eh.png b/deluge/ui/data/pixmaps/flags/eh.png
index ae7daca43..39982d297 100644
--- a/deluge/ui/data/pixmaps/flags/eh.png
+++ b/deluge/ui/data/pixmaps/flags/eh.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/er.png b/deluge/ui/data/pixmaps/flags/er.png
index b3644d4a2..d30b89f4a 100644
--- a/deluge/ui/data/pixmaps/flags/er.png
+++ b/deluge/ui/data/pixmaps/flags/er.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/es.png b/deluge/ui/data/pixmaps/flags/es.png
index 9cc55dd04..afcffef78 100644
--- a/deluge/ui/data/pixmaps/flags/es.png
+++ b/deluge/ui/data/pixmaps/flags/es.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/et.png b/deluge/ui/data/pixmaps/flags/et.png
index f4356fa51..a2c5d3ba7 100644
--- a/deluge/ui/data/pixmaps/flags/et.png
+++ b/deluge/ui/data/pixmaps/flags/et.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/fi.png b/deluge/ui/data/pixmaps/flags/fi.png
index 73f8c91de..c89702679 100644
--- a/deluge/ui/data/pixmaps/flags/fi.png
+++ b/deluge/ui/data/pixmaps/flags/fi.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/fj.png b/deluge/ui/data/pixmaps/flags/fj.png
index 0544e7a95..805d3b2af 100644
--- a/deluge/ui/data/pixmaps/flags/fj.png
+++ b/deluge/ui/data/pixmaps/flags/fj.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/fo.png b/deluge/ui/data/pixmaps/flags/fo.png
index b922a4f30..63ef1bdd4 100644
--- a/deluge/ui/data/pixmaps/flags/fo.png
+++ b/deluge/ui/data/pixmaps/flags/fo.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/fr.png b/deluge/ui/data/pixmaps/flags/fr.png
index 59346a911..84dd91764 100644
--- a/deluge/ui/data/pixmaps/flags/fr.png
+++ b/deluge/ui/data/pixmaps/flags/fr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ga.png b/deluge/ui/data/pixmaps/flags/ga.png
index 63cb01397..e584067d2 100644
--- a/deluge/ui/data/pixmaps/flags/ga.png
+++ b/deluge/ui/data/pixmaps/flags/ga.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gb.png b/deluge/ui/data/pixmaps/flags/gb.png
index 95007c7be..4a351b7ab 100644
--- a/deluge/ui/data/pixmaps/flags/gb.png
+++ b/deluge/ui/data/pixmaps/flags/gb.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gd.png b/deluge/ui/data/pixmaps/flags/gd.png
index 1c7de15f6..56f2d2b23 100644
--- a/deluge/ui/data/pixmaps/flags/gd.png
+++ b/deluge/ui/data/pixmaps/flags/gd.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ge.png b/deluge/ui/data/pixmaps/flags/ge.png
index 44685b656..e2389a15a 100644
--- a/deluge/ui/data/pixmaps/flags/ge.png
+++ b/deluge/ui/data/pixmaps/flags/ge.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gf.png b/deluge/ui/data/pixmaps/flags/gf.png
index 59346a911..84dd91764 100644
--- a/deluge/ui/data/pixmaps/flags/gf.png
+++ b/deluge/ui/data/pixmaps/flags/gf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gg.png b/deluge/ui/data/pixmaps/flags/gg.png
index f65fbe1d2..3057a73d6 100644
--- a/deluge/ui/data/pixmaps/flags/gg.png
+++ b/deluge/ui/data/pixmaps/flags/gg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gh.png b/deluge/ui/data/pixmaps/flags/gh.png
index bc5741c3f..39f91b1fd 100644
--- a/deluge/ui/data/pixmaps/flags/gh.png
+++ b/deluge/ui/data/pixmaps/flags/gh.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gi.png b/deluge/ui/data/pixmaps/flags/gi.png
index 8edbe3748..3e631b3b1 100644
--- a/deluge/ui/data/pixmaps/flags/gi.png
+++ b/deluge/ui/data/pixmaps/flags/gi.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gl.png b/deluge/ui/data/pixmaps/flags/gl.png
index d8c022fde..40b443434 100644
--- a/deluge/ui/data/pixmaps/flags/gl.png
+++ b/deluge/ui/data/pixmaps/flags/gl.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gn.png b/deluge/ui/data/pixmaps/flags/gn.png
index b73833359..879495159 100644
--- a/deluge/ui/data/pixmaps/flags/gn.png
+++ b/deluge/ui/data/pixmaps/flags/gn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gp.png b/deluge/ui/data/pixmaps/flags/gp.png
index 81a21d3d5..a8340a26f 100644
--- a/deluge/ui/data/pixmaps/flags/gp.png
+++ b/deluge/ui/data/pixmaps/flags/gp.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gq.png b/deluge/ui/data/pixmaps/flags/gq.png
index 5d22f18ad..f773395ca 100644
--- a/deluge/ui/data/pixmaps/flags/gq.png
+++ b/deluge/ui/data/pixmaps/flags/gq.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gr.png b/deluge/ui/data/pixmaps/flags/gr.png
index 9fcb34548..840b53462 100644
--- a/deluge/ui/data/pixmaps/flags/gr.png
+++ b/deluge/ui/data/pixmaps/flags/gr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gt.png b/deluge/ui/data/pixmaps/flags/gt.png
index a05b89c3e..d9b836e26 100644
--- a/deluge/ui/data/pixmaps/flags/gt.png
+++ b/deluge/ui/data/pixmaps/flags/gt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gu.png b/deluge/ui/data/pixmaps/flags/gu.png
index 83beb89ac..4886da3d4 100644
--- a/deluge/ui/data/pixmaps/flags/gu.png
+++ b/deluge/ui/data/pixmaps/flags/gu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gw.png b/deluge/ui/data/pixmaps/flags/gw.png
index fe406b28a..db172bdf4 100644
--- a/deluge/ui/data/pixmaps/flags/gw.png
+++ b/deluge/ui/data/pixmaps/flags/gw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/gy.png b/deluge/ui/data/pixmaps/flags/gy.png
index fff34e303..6424d8e9c 100644
--- a/deluge/ui/data/pixmaps/flags/gy.png
+++ b/deluge/ui/data/pixmaps/flags/gy.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/hk.png b/deluge/ui/data/pixmaps/flags/hk.png
index 6a5625a00..e969f862b 100644
--- a/deluge/ui/data/pixmaps/flags/hk.png
+++ b/deluge/ui/data/pixmaps/flags/hk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/hm.png b/deluge/ui/data/pixmaps/flags/hm.png
index 0de18f0b2..0335dbfc8 100644
--- a/deluge/ui/data/pixmaps/flags/hm.png
+++ b/deluge/ui/data/pixmaps/flags/hm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/hn.png b/deluge/ui/data/pixmaps/flags/hn.png
index 77a009ace..e3faca9f3 100644
--- a/deluge/ui/data/pixmaps/flags/hn.png
+++ b/deluge/ui/data/pixmaps/flags/hn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/hr.png b/deluge/ui/data/pixmaps/flags/hr.png
index f56bc2926..aa64bf889 100644
--- a/deluge/ui/data/pixmaps/flags/hr.png
+++ b/deluge/ui/data/pixmaps/flags/hr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ht.png b/deluge/ui/data/pixmaps/flags/ht.png
index 16d00e8c1..bbcfd7ed6 100644
--- a/deluge/ui/data/pixmaps/flags/ht.png
+++ b/deluge/ui/data/pixmaps/flags/ht.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/id.png b/deluge/ui/data/pixmaps/flags/id.png
index 201ad0fcb..b1cdf79b9 100644
--- a/deluge/ui/data/pixmaps/flags/id.png
+++ b/deluge/ui/data/pixmaps/flags/id.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/in.png b/deluge/ui/data/pixmaps/flags/in.png
index 0b515d76a..0f5801e7f 100644
--- a/deluge/ui/data/pixmaps/flags/in.png
+++ b/deluge/ui/data/pixmaps/flags/in.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/iq.png b/deluge/ui/data/pixmaps/flags/iq.png
index cb1ca164e..221fbc6df 100644
--- a/deluge/ui/data/pixmaps/flags/iq.png
+++ b/deluge/ui/data/pixmaps/flags/iq.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ir.png b/deluge/ui/data/pixmaps/flags/ir.png
index f6d1027bd..8992fa456 100644
--- a/deluge/ui/data/pixmaps/flags/ir.png
+++ b/deluge/ui/data/pixmaps/flags/ir.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/is.png b/deluge/ui/data/pixmaps/flags/is.png
index f7383cbce..3f5d5c42f 100644
--- a/deluge/ui/data/pixmaps/flags/is.png
+++ b/deluge/ui/data/pixmaps/flags/is.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/it.png b/deluge/ui/data/pixmaps/flags/it.png
index c3c3143c7..ad34d9f2c 100644
--- a/deluge/ui/data/pixmaps/flags/it.png
+++ b/deluge/ui/data/pixmaps/flags/it.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/jp.png b/deluge/ui/data/pixmaps/flags/jp.png
index e470d756d..def1d3c7d 100644
--- a/deluge/ui/data/pixmaps/flags/jp.png
+++ b/deluge/ui/data/pixmaps/flags/jp.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ke.png b/deluge/ui/data/pixmaps/flags/ke.png
index 212cc2e0e..2adad2d51 100644
--- a/deluge/ui/data/pixmaps/flags/ke.png
+++ b/deluge/ui/data/pixmaps/flags/ke.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kg.png b/deluge/ui/data/pixmaps/flags/kg.png
index 848da86b8..8be5235df 100644
--- a/deluge/ui/data/pixmaps/flags/kg.png
+++ b/deluge/ui/data/pixmaps/flags/kg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kh.png b/deluge/ui/data/pixmaps/flags/kh.png
index bf961c5d0..24da97236 100644
--- a/deluge/ui/data/pixmaps/flags/kh.png
+++ b/deluge/ui/data/pixmaps/flags/kh.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/km.png b/deluge/ui/data/pixmaps/flags/km.png
index 7ead97e0e..625437d25 100644
--- a/deluge/ui/data/pixmaps/flags/km.png
+++ b/deluge/ui/data/pixmaps/flags/km.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kp.png b/deluge/ui/data/pixmaps/flags/kp.png
index b517d1c20..fb473ec22 100644
--- a/deluge/ui/data/pixmaps/flags/kp.png
+++ b/deluge/ui/data/pixmaps/flags/kp.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kr.png b/deluge/ui/data/pixmaps/flags/kr.png
index ea3122e47..55bcf3872 100644
--- a/deluge/ui/data/pixmaps/flags/kr.png
+++ b/deluge/ui/data/pixmaps/flags/kr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kw.png b/deluge/ui/data/pixmaps/flags/kw.png
index a3a7fcbcf..565cc0369 100644
--- a/deluge/ui/data/pixmaps/flags/kw.png
+++ b/deluge/ui/data/pixmaps/flags/kw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ky.png b/deluge/ui/data/pixmaps/flags/ky.png
index 63b55463f..b08b3bccb 100644
--- a/deluge/ui/data/pixmaps/flags/ky.png
+++ b/deluge/ui/data/pixmaps/flags/ky.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/kz.png b/deluge/ui/data/pixmaps/flags/kz.png
index 193cf3872..49fcc2611 100644
--- a/deluge/ui/data/pixmaps/flags/kz.png
+++ b/deluge/ui/data/pixmaps/flags/kz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/la.png b/deluge/ui/data/pixmaps/flags/la.png
index 85b6097a1..0098f1b80 100644
--- a/deluge/ui/data/pixmaps/flags/la.png
+++ b/deluge/ui/data/pixmaps/flags/la.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lb.png b/deluge/ui/data/pixmaps/flags/lb.png
index b8e9c2f15..c519388ab 100644
--- a/deluge/ui/data/pixmaps/flags/lb.png
+++ b/deluge/ui/data/pixmaps/flags/lb.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lc.png b/deluge/ui/data/pixmaps/flags/lc.png
index d8a8656b5..f42f007ee 100644
--- a/deluge/ui/data/pixmaps/flags/lc.png
+++ b/deluge/ui/data/pixmaps/flags/lc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/li.png b/deluge/ui/data/pixmaps/flags/li.png
index 6bb7b2b7b..02f75488b 100644
--- a/deluge/ui/data/pixmaps/flags/li.png
+++ b/deluge/ui/data/pixmaps/flags/li.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lk.png b/deluge/ui/data/pixmaps/flags/lk.png
index 4f16cd77a..22abcdb68 100644
--- a/deluge/ui/data/pixmaps/flags/lk.png
+++ b/deluge/ui/data/pixmaps/flags/lk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lr.png b/deluge/ui/data/pixmaps/flags/lr.png
index d76e171e9..676fda789 100644
--- a/deluge/ui/data/pixmaps/flags/lr.png
+++ b/deluge/ui/data/pixmaps/flags/lr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ls.png b/deluge/ui/data/pixmaps/flags/ls.png
index 02cdd660f..3a2fcae5a 100644
--- a/deluge/ui/data/pixmaps/flags/ls.png
+++ b/deluge/ui/data/pixmaps/flags/ls.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lt.png b/deluge/ui/data/pixmaps/flags/lt.png
index e0714c541..05a445c00 100644
--- a/deluge/ui/data/pixmaps/flags/lt.png
+++ b/deluge/ui/data/pixmaps/flags/lt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lu.png b/deluge/ui/data/pixmaps/flags/lu.png
index f750b0c24..c9d4d7253 100644
--- a/deluge/ui/data/pixmaps/flags/lu.png
+++ b/deluge/ui/data/pixmaps/flags/lu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/lv.png b/deluge/ui/data/pixmaps/flags/lv.png
index f35709550..72504d11d 100644
--- a/deluge/ui/data/pixmaps/flags/lv.png
+++ b/deluge/ui/data/pixmaps/flags/lv.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ly.png b/deluge/ui/data/pixmaps/flags/ly.png
index 9e35e389d..ebd3cf62c 100644
--- a/deluge/ui/data/pixmaps/flags/ly.png
+++ b/deluge/ui/data/pixmaps/flags/ly.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ma.png b/deluge/ui/data/pixmaps/flags/ma.png
index b8f8decfa..62d706570 100644
--- a/deluge/ui/data/pixmaps/flags/ma.png
+++ b/deluge/ui/data/pixmaps/flags/ma.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mc.png b/deluge/ui/data/pixmaps/flags/mc.png
index 67099ea18..3f2d6be4a 100644
--- a/deluge/ui/data/pixmaps/flags/mc.png
+++ b/deluge/ui/data/pixmaps/flags/mc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/md.png b/deluge/ui/data/pixmaps/flags/md.png
index 6ff6cf59e..c72632e1d 100644
--- a/deluge/ui/data/pixmaps/flags/md.png
+++ b/deluge/ui/data/pixmaps/flags/md.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/me.png b/deluge/ui/data/pixmaps/flags/me.png
index 36cbdd582..0760fb8e8 100644
--- a/deluge/ui/data/pixmaps/flags/me.png
+++ b/deluge/ui/data/pixmaps/flags/me.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mg.png b/deluge/ui/data/pixmaps/flags/mg.png
index d9313e295..7000ff015 100644
--- a/deluge/ui/data/pixmaps/flags/mg.png
+++ b/deluge/ui/data/pixmaps/flags/mg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mh.png b/deluge/ui/data/pixmaps/flags/mh.png
index 7618cc6fa..fe2caeff1 100644
--- a/deluge/ui/data/pixmaps/flags/mh.png
+++ b/deluge/ui/data/pixmaps/flags/mh.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mk.png b/deluge/ui/data/pixmaps/flags/mk.png
index 1c98d5154..8739fee7b 100644
--- a/deluge/ui/data/pixmaps/flags/mk.png
+++ b/deluge/ui/data/pixmaps/flags/mk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ml.png b/deluge/ui/data/pixmaps/flags/ml.png
index d59cea847..f35c3a302 100644
--- a/deluge/ui/data/pixmaps/flags/ml.png
+++ b/deluge/ui/data/pixmaps/flags/ml.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mm.png b/deluge/ui/data/pixmaps/flags/mm.png
index 175fc5787..94bcb9362 100644
--- a/deluge/ui/data/pixmaps/flags/mm.png
+++ b/deluge/ui/data/pixmaps/flags/mm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mn.png b/deluge/ui/data/pixmaps/flags/mn.png
index 0ad97b350..8e20c1d57 100644
--- a/deluge/ui/data/pixmaps/flags/mn.png
+++ b/deluge/ui/data/pixmaps/flags/mn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mo.png b/deluge/ui/data/pixmaps/flags/mo.png
index f49e677e8..bbc14deef 100644
--- a/deluge/ui/data/pixmaps/flags/mo.png
+++ b/deluge/ui/data/pixmaps/flags/mo.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mp.png b/deluge/ui/data/pixmaps/flags/mp.png
index e91b75b63..ab6d5b8b7 100644
--- a/deluge/ui/data/pixmaps/flags/mp.png
+++ b/deluge/ui/data/pixmaps/flags/mp.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mq.png b/deluge/ui/data/pixmaps/flags/mq.png
index 5c5ae824b..9f52d1556 100644
--- a/deluge/ui/data/pixmaps/flags/mq.png
+++ b/deluge/ui/data/pixmaps/flags/mq.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mr.png b/deluge/ui/data/pixmaps/flags/mr.png
index 91d9a5a9d..e335ec22c 100644
--- a/deluge/ui/data/pixmaps/flags/mr.png
+++ b/deluge/ui/data/pixmaps/flags/mr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ms.png b/deluge/ui/data/pixmaps/flags/ms.png
index d45c16c39..addd14417 100644
--- a/deluge/ui/data/pixmaps/flags/ms.png
+++ b/deluge/ui/data/pixmaps/flags/ms.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mu.png b/deluge/ui/data/pixmaps/flags/mu.png
index ecdc1869a..38b6687a1 100644
--- a/deluge/ui/data/pixmaps/flags/mu.png
+++ b/deluge/ui/data/pixmaps/flags/mu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mv.png b/deluge/ui/data/pixmaps/flags/mv.png
index b17294451..1185f135c 100644
--- a/deluge/ui/data/pixmaps/flags/mv.png
+++ b/deluge/ui/data/pixmaps/flags/mv.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mw.png b/deluge/ui/data/pixmaps/flags/mw.png
index cb9b61f49..d68ffeefb 100644
--- a/deluge/ui/data/pixmaps/flags/mw.png
+++ b/deluge/ui/data/pixmaps/flags/mw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mx.png b/deluge/ui/data/pixmaps/flags/mx.png
index b8e70b868..996bcaef3 100644
--- a/deluge/ui/data/pixmaps/flags/mx.png
+++ b/deluge/ui/data/pixmaps/flags/mx.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/my.png b/deluge/ui/data/pixmaps/flags/my.png
index 879cf519c..2b13696be 100644
--- a/deluge/ui/data/pixmaps/flags/my.png
+++ b/deluge/ui/data/pixmaps/flags/my.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/mz.png b/deluge/ui/data/pixmaps/flags/mz.png
index 35545922b..484e99892 100644
--- a/deluge/ui/data/pixmaps/flags/mz.png
+++ b/deluge/ui/data/pixmaps/flags/mz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/na.png b/deluge/ui/data/pixmaps/flags/na.png
index 426cde9a5..806e2d624 100644
--- a/deluge/ui/data/pixmaps/flags/na.png
+++ b/deluge/ui/data/pixmaps/flags/na.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/nc.png b/deluge/ui/data/pixmaps/flags/nc.png
index 88c35ac13..de2314a82 100644
--- a/deluge/ui/data/pixmaps/flags/nc.png
+++ b/deluge/ui/data/pixmaps/flags/nc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ne.png b/deluge/ui/data/pixmaps/flags/ne.png
index eff1c3530..f76deb1cc 100644
--- a/deluge/ui/data/pixmaps/flags/ne.png
+++ b/deluge/ui/data/pixmaps/flags/ne.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ng.png b/deluge/ui/data/pixmaps/flags/ng.png
index e2f2b61d1..4e66ac3c0 100644
--- a/deluge/ui/data/pixmaps/flags/ng.png
+++ b/deluge/ui/data/pixmaps/flags/ng.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ni.png b/deluge/ui/data/pixmaps/flags/ni.png
index 9332b95c2..6d0cd865d 100644
--- a/deluge/ui/data/pixmaps/flags/ni.png
+++ b/deluge/ui/data/pixmaps/flags/ni.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/nl.png b/deluge/ui/data/pixmaps/flags/nl.png
index 267d1dceb..b0653cc8a 100644
--- a/deluge/ui/data/pixmaps/flags/nl.png
+++ b/deluge/ui/data/pixmaps/flags/nl.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/no.png b/deluge/ui/data/pixmaps/flags/no.png
index ae9060caf..faaa529d1 100644
--- a/deluge/ui/data/pixmaps/flags/no.png
+++ b/deluge/ui/data/pixmaps/flags/no.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/np.png b/deluge/ui/data/pixmaps/flags/np.png
index 6637ea544..9e161085b 100644
--- a/deluge/ui/data/pixmaps/flags/np.png
+++ b/deluge/ui/data/pixmaps/flags/np.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/nr.png b/deluge/ui/data/pixmaps/flags/nr.png
index 60f73461e..c28d3eec7 100644
--- a/deluge/ui/data/pixmaps/flags/nr.png
+++ b/deluge/ui/data/pixmaps/flags/nr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/nu.png b/deluge/ui/data/pixmaps/flags/nu.png
index 21e52a76e..9e82b5e12 100644
--- a/deluge/ui/data/pixmaps/flags/nu.png
+++ b/deluge/ui/data/pixmaps/flags/nu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/nz.png b/deluge/ui/data/pixmaps/flags/nz.png
index d5a7ebc7b..db738747b 100644
--- a/deluge/ui/data/pixmaps/flags/nz.png
+++ b/deluge/ui/data/pixmaps/flags/nz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/om.png b/deluge/ui/data/pixmaps/flags/om.png
index 6dc30d4fc..aa02242c9 100644
--- a/deluge/ui/data/pixmaps/flags/om.png
+++ b/deluge/ui/data/pixmaps/flags/om.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pa.png b/deluge/ui/data/pixmaps/flags/pa.png
index 895443640..810268af3 100644
--- a/deluge/ui/data/pixmaps/flags/pa.png
+++ b/deluge/ui/data/pixmaps/flags/pa.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pf.png b/deluge/ui/data/pixmaps/flags/pf.png
index ea4d04611..9a05d6674 100644
--- a/deluge/ui/data/pixmaps/flags/pf.png
+++ b/deluge/ui/data/pixmaps/flags/pf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pg.png b/deluge/ui/data/pixmaps/flags/pg.png
index c97ce6a76..e4ec2d175 100644
--- a/deluge/ui/data/pixmaps/flags/pg.png
+++ b/deluge/ui/data/pixmaps/flags/pg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ph.png b/deluge/ui/data/pixmaps/flags/ph.png
index 67d289173..423209405 100644
--- a/deluge/ui/data/pixmaps/flags/ph.png
+++ b/deluge/ui/data/pixmaps/flags/ph.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pk.png b/deluge/ui/data/pixmaps/flags/pk.png
index a92d71c08..bb4822ffc 100644
--- a/deluge/ui/data/pixmaps/flags/pk.png
+++ b/deluge/ui/data/pixmaps/flags/pk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pl.png b/deluge/ui/data/pixmaps/flags/pl.png
index 2c4f2ed1f..843568a6a 100644
--- a/deluge/ui/data/pixmaps/flags/pl.png
+++ b/deluge/ui/data/pixmaps/flags/pl.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pm.png b/deluge/ui/data/pixmaps/flags/pm.png
index ce429f0d2..f167375f0 100644
--- a/deluge/ui/data/pixmaps/flags/pm.png
+++ b/deluge/ui/data/pixmaps/flags/pm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pr.png b/deluge/ui/data/pixmaps/flags/pr.png
index 60d359917..0dc6d8d37 100644
--- a/deluge/ui/data/pixmaps/flags/pr.png
+++ b/deluge/ui/data/pixmaps/flags/pr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ps.png b/deluge/ui/data/pixmaps/flags/ps.png
index ceda7d7aa..3955b5cd7 100644
--- a/deluge/ui/data/pixmaps/flags/ps.png
+++ b/deluge/ui/data/pixmaps/flags/ps.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pt.png b/deluge/ui/data/pixmaps/flags/pt.png
index c489acda3..ee95fc82f 100644
--- a/deluge/ui/data/pixmaps/flags/pt.png
+++ b/deluge/ui/data/pixmaps/flags/pt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/pw.png b/deluge/ui/data/pixmaps/flags/pw.png
index 668c93a03..43d9dcb85 100644
--- a/deluge/ui/data/pixmaps/flags/pw.png
+++ b/deluge/ui/data/pixmaps/flags/pw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/py.png b/deluge/ui/data/pixmaps/flags/py.png
index d5e943b0c..bc5d77db3 100644
--- a/deluge/ui/data/pixmaps/flags/py.png
+++ b/deluge/ui/data/pixmaps/flags/py.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/qa.png b/deluge/ui/data/pixmaps/flags/qa.png
index 08a3793e7..09709cc63 100644
--- a/deluge/ui/data/pixmaps/flags/qa.png
+++ b/deluge/ui/data/pixmaps/flags/qa.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/re.png b/deluge/ui/data/pixmaps/flags/re.png
index 59346a911..84dd91764 100644
--- a/deluge/ui/data/pixmaps/flags/re.png
+++ b/deluge/ui/data/pixmaps/flags/re.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ro.png b/deluge/ui/data/pixmaps/flags/ro.png
index f80a44a7f..594f245f5 100644
--- a/deluge/ui/data/pixmaps/flags/ro.png
+++ b/deluge/ui/data/pixmaps/flags/ro.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/rs.png b/deluge/ui/data/pixmaps/flags/rs.png
index 9a35bcc55..03176f73d 100644
--- a/deluge/ui/data/pixmaps/flags/rs.png
+++ b/deluge/ui/data/pixmaps/flags/rs.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/rw.png b/deluge/ui/data/pixmaps/flags/rw.png
index 0d3143791..c7e422a7b 100644
--- a/deluge/ui/data/pixmaps/flags/rw.png
+++ b/deluge/ui/data/pixmaps/flags/rw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sa.png b/deluge/ui/data/pixmaps/flags/sa.png
index 2fc170454..bd19de219 100644
--- a/deluge/ui/data/pixmaps/flags/sa.png
+++ b/deluge/ui/data/pixmaps/flags/sa.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sc.png b/deluge/ui/data/pixmaps/flags/sc.png
index c25e11369..e0bbfa72d 100644
--- a/deluge/ui/data/pixmaps/flags/sc.png
+++ b/deluge/ui/data/pixmaps/flags/sc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sd.png b/deluge/ui/data/pixmaps/flags/sd.png
index d22408c30..cbca3d2b5 100644
--- a/deluge/ui/data/pixmaps/flags/sd.png
+++ b/deluge/ui/data/pixmaps/flags/sd.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/se.png b/deluge/ui/data/pixmaps/flags/se.png
index 482101a66..e3d273a6f 100644
--- a/deluge/ui/data/pixmaps/flags/se.png
+++ b/deluge/ui/data/pixmaps/flags/se.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sg.png b/deluge/ui/data/pixmaps/flags/sg.png
index 055e04a1e..898748b76 100644
--- a/deluge/ui/data/pixmaps/flags/sg.png
+++ b/deluge/ui/data/pixmaps/flags/sg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sh.png b/deluge/ui/data/pixmaps/flags/sh.png
index 838dad78e..cb5282e2d 100644
--- a/deluge/ui/data/pixmaps/flags/sh.png
+++ b/deluge/ui/data/pixmaps/flags/sh.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/si.png b/deluge/ui/data/pixmaps/flags/si.png
index 206721e5f..d2f976b3a 100644
--- a/deluge/ui/data/pixmaps/flags/si.png
+++ b/deluge/ui/data/pixmaps/flags/si.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sj.png b/deluge/ui/data/pixmaps/flags/sj.png
index ae9060caf..faaa529d1 100644
--- a/deluge/ui/data/pixmaps/flags/sj.png
+++ b/deluge/ui/data/pixmaps/flags/sj.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sk.png b/deluge/ui/data/pixmaps/flags/sk.png
index acdd1893d..6f36d1429 100644
--- a/deluge/ui/data/pixmaps/flags/sk.png
+++ b/deluge/ui/data/pixmaps/flags/sk.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sl.png b/deluge/ui/data/pixmaps/flags/sl.png
index d50e5d4ef..3d70d224c 100644
--- a/deluge/ui/data/pixmaps/flags/sl.png
+++ b/deluge/ui/data/pixmaps/flags/sl.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sn.png b/deluge/ui/data/pixmaps/flags/sn.png
index 4029d3a7d..3be2d4c56 100644
--- a/deluge/ui/data/pixmaps/flags/sn.png
+++ b/deluge/ui/data/pixmaps/flags/sn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/so.png b/deluge/ui/data/pixmaps/flags/so.png
index b17fcf27f..c3169fa64 100644
--- a/deluge/ui/data/pixmaps/flags/so.png
+++ b/deluge/ui/data/pixmaps/flags/so.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sr.png b/deluge/ui/data/pixmaps/flags/sr.png
index e79029176..006f86f05 100644
--- a/deluge/ui/data/pixmaps/flags/sr.png
+++ b/deluge/ui/data/pixmaps/flags/sr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/st.png b/deluge/ui/data/pixmaps/flags/st.png
index 63c3e12ff..086db357a 100644
--- a/deluge/ui/data/pixmaps/flags/st.png
+++ b/deluge/ui/data/pixmaps/flags/st.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sv.png b/deluge/ui/data/pixmaps/flags/sv.png
index 309eb39d3..691fc669b 100644
--- a/deluge/ui/data/pixmaps/flags/sv.png
+++ b/deluge/ui/data/pixmaps/flags/sv.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sy.png b/deluge/ui/data/pixmaps/flags/sy.png
index 8a369aabf..5a28ce67b 100644
--- a/deluge/ui/data/pixmaps/flags/sy.png
+++ b/deluge/ui/data/pixmaps/flags/sy.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/sz.png b/deluge/ui/data/pixmaps/flags/sz.png
index 2da75092b..fba6beffc 100644
--- a/deluge/ui/data/pixmaps/flags/sz.png
+++ b/deluge/ui/data/pixmaps/flags/sz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tc.png b/deluge/ui/data/pixmaps/flags/tc.png
index c7b735443..dfecacd03 100644
--- a/deluge/ui/data/pixmaps/flags/tc.png
+++ b/deluge/ui/data/pixmaps/flags/tc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/td.png b/deluge/ui/data/pixmaps/flags/td.png
index c82f450f0..27b6cb805 100644
--- a/deluge/ui/data/pixmaps/flags/td.png
+++ b/deluge/ui/data/pixmaps/flags/td.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tf.png b/deluge/ui/data/pixmaps/flags/tf.png
index bf8077348..0f56fa04b 100644
--- a/deluge/ui/data/pixmaps/flags/tf.png
+++ b/deluge/ui/data/pixmaps/flags/tf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/th.png b/deluge/ui/data/pixmaps/flags/th.png
index bf739941e..744865f57 100644
--- a/deluge/ui/data/pixmaps/flags/th.png
+++ b/deluge/ui/data/pixmaps/flags/th.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tj.png b/deluge/ui/data/pixmaps/flags/tj.png
index 3efd165cc..837dd2caa 100644
--- a/deluge/ui/data/pixmaps/flags/tj.png
+++ b/deluge/ui/data/pixmaps/flags/tj.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tl.png b/deluge/ui/data/pixmaps/flags/tl.png
index d7c41a9c7..843ec671d 100644
--- a/deluge/ui/data/pixmaps/flags/tl.png
+++ b/deluge/ui/data/pixmaps/flags/tl.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tm.png b/deluge/ui/data/pixmaps/flags/tm.png
index a2aed22dd..6356f3c5d 100644
--- a/deluge/ui/data/pixmaps/flags/tm.png
+++ b/deluge/ui/data/pixmaps/flags/tm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tn.png b/deluge/ui/data/pixmaps/flags/tn.png
index 61086fa77..fdf73c09d 100644
--- a/deluge/ui/data/pixmaps/flags/tn.png
+++ b/deluge/ui/data/pixmaps/flags/tn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/to.png b/deluge/ui/data/pixmaps/flags/to.png
index 8e49d30e3..7bd4389a2 100644
--- a/deluge/ui/data/pixmaps/flags/to.png
+++ b/deluge/ui/data/pixmaps/flags/to.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tp.png b/deluge/ui/data/pixmaps/flags/tp.png
index aa298c0f8..a8bb82fe4 100644
--- a/deluge/ui/data/pixmaps/flags/tp.png
+++ b/deluge/ui/data/pixmaps/flags/tp.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tr.png b/deluge/ui/data/pixmaps/flags/tr.png
index 09f82d09e..34b5a1c4b 100644
--- a/deluge/ui/data/pixmaps/flags/tr.png
+++ b/deluge/ui/data/pixmaps/flags/tr.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tt.png b/deluge/ui/data/pixmaps/flags/tt.png
index 18b09e1d3..7ff729b30 100644
--- a/deluge/ui/data/pixmaps/flags/tt.png
+++ b/deluge/ui/data/pixmaps/flags/tt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/tz.png b/deluge/ui/data/pixmaps/flags/tz.png
index 3543543ce..38fbdf18f 100644
--- a/deluge/ui/data/pixmaps/flags/tz.png
+++ b/deluge/ui/data/pixmaps/flags/tz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ua.png b/deluge/ui/data/pixmaps/flags/ua.png
index e09f110dd..08e38f95e 100644
--- a/deluge/ui/data/pixmaps/flags/ua.png
+++ b/deluge/ui/data/pixmaps/flags/ua.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ug.png b/deluge/ui/data/pixmaps/flags/ug.png
index d1d9bc0f8..2fa3e44ce 100644
--- a/deluge/ui/data/pixmaps/flags/ug.png
+++ b/deluge/ui/data/pixmaps/flags/ug.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/um.png b/deluge/ui/data/pixmaps/flags/um.png
index 2694ab98e..a0617bd81 100644
--- a/deluge/ui/data/pixmaps/flags/um.png
+++ b/deluge/ui/data/pixmaps/flags/um.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/us.png b/deluge/ui/data/pixmaps/flags/us.png
index 68707f40c..5e0b8cf5c 100644
--- a/deluge/ui/data/pixmaps/flags/us.png
+++ b/deluge/ui/data/pixmaps/flags/us.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/uy.png b/deluge/ui/data/pixmaps/flags/uy.png
index 4c515670f..e69713a6e 100644
--- a/deluge/ui/data/pixmaps/flags/uy.png
+++ b/deluge/ui/data/pixmaps/flags/uy.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/uz.png b/deluge/ui/data/pixmaps/flags/uz.png
index e85d67d4b..5d3d7c16d 100644
--- a/deluge/ui/data/pixmaps/flags/uz.png
+++ b/deluge/ui/data/pixmaps/flags/uz.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/va.png b/deluge/ui/data/pixmaps/flags/va.png
index 582e2ba16..af8f6b23e 100644
--- a/deluge/ui/data/pixmaps/flags/va.png
+++ b/deluge/ui/data/pixmaps/flags/va.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/vc.png b/deluge/ui/data/pixmaps/flags/vc.png
index e5726112b..cf1d6e204 100644
--- a/deluge/ui/data/pixmaps/flags/vc.png
+++ b/deluge/ui/data/pixmaps/flags/vc.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ve.png b/deluge/ui/data/pixmaps/flags/ve.png
index 0899d54ae..e26b28a08 100644
--- a/deluge/ui/data/pixmaps/flags/ve.png
+++ b/deluge/ui/data/pixmaps/flags/ve.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/vg.png b/deluge/ui/data/pixmaps/flags/vg.png
index d9f04d6f7..3ece564ae 100644
--- a/deluge/ui/data/pixmaps/flags/vg.png
+++ b/deluge/ui/data/pixmaps/flags/vg.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/vi.png b/deluge/ui/data/pixmaps/flags/vi.png
index 2b887b30f..54d5c0e90 100644
--- a/deluge/ui/data/pixmaps/flags/vi.png
+++ b/deluge/ui/data/pixmaps/flags/vi.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/vn.png b/deluge/ui/data/pixmaps/flags/vn.png
index 335e9fc8e..8a6970349 100644
--- a/deluge/ui/data/pixmaps/flags/vn.png
+++ b/deluge/ui/data/pixmaps/flags/vn.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/vu.png b/deluge/ui/data/pixmaps/flags/vu.png
index f3fa6e62b..2794923a6 100644
--- a/deluge/ui/data/pixmaps/flags/vu.png
+++ b/deluge/ui/data/pixmaps/flags/vu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/wf.png b/deluge/ui/data/pixmaps/flags/wf.png
index 1d6460edb..574d08ac5 100644
--- a/deluge/ui/data/pixmaps/flags/wf.png
+++ b/deluge/ui/data/pixmaps/flags/wf.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ws.png b/deluge/ui/data/pixmaps/flags/ws.png
index 628f38793..6339a173e 100644
--- a/deluge/ui/data/pixmaps/flags/ws.png
+++ b/deluge/ui/data/pixmaps/flags/ws.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/ye.png b/deluge/ui/data/pixmaps/flags/ye.png
index b3f760b7b..c9187dd99 100644
--- a/deluge/ui/data/pixmaps/flags/ye.png
+++ b/deluge/ui/data/pixmaps/flags/ye.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/yt.png b/deluge/ui/data/pixmaps/flags/yt.png
index d0c5a2c88..41ef4a7f3 100644
--- a/deluge/ui/data/pixmaps/flags/yt.png
+++ b/deluge/ui/data/pixmaps/flags/yt.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/yu.png b/deluge/ui/data/pixmaps/flags/yu.png
index 4827aec2d..18fbde63f 100644
--- a/deluge/ui/data/pixmaps/flags/yu.png
+++ b/deluge/ui/data/pixmaps/flags/yu.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/za.png b/deluge/ui/data/pixmaps/flags/za.png
index 53ba7e1dd..04146b599 100644
--- a/deluge/ui/data/pixmaps/flags/za.png
+++ b/deluge/ui/data/pixmaps/flags/za.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/zm.png b/deluge/ui/data/pixmaps/flags/zm.png
index 2911ca7ce..363b4dfbc 100644
--- a/deluge/ui/data/pixmaps/flags/zm.png
+++ b/deluge/ui/data/pixmaps/flags/zm.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/flags/zw.png b/deluge/ui/data/pixmaps/flags/zw.png
index 9c065013a..030b1474b 100644
--- a/deluge/ui/data/pixmaps/flags/zw.png
+++ b/deluge/ui/data/pixmaps/flags/zw.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/inactive16.png b/deluge/ui/data/pixmaps/inactive16.png
index cae8b2c0a..e434dad9f 100644
--- a/deluge/ui/data/pixmaps/inactive16.png
+++ b/deluge/ui/data/pixmaps/inactive16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/magnet16.png b/deluge/ui/data/pixmaps/magnet16.png
index 61d6dabb7..6fc25ed69 100644
--- a/deluge/ui/data/pixmaps/magnet16.png
+++ b/deluge/ui/data/pixmaps/magnet16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/magnet_add16.png b/deluge/ui/data/pixmaps/magnet_add16.png
index 37c1c36b0..f6010f54a 100644
--- a/deluge/ui/data/pixmaps/magnet_add16.png
+++ b/deluge/ui/data/pixmaps/magnet_add16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/magnet_copy16.png b/deluge/ui/data/pixmaps/magnet_copy16.png
index a4be9d218..9b4ec6bbf 100644
--- a/deluge/ui/data/pixmaps/magnet_copy16.png
+++ b/deluge/ui/data/pixmaps/magnet_copy16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/queued16.png b/deluge/ui/data/pixmaps/queued16.png
index f9f74540f..74db4c5eb 100644
--- a/deluge/ui/data/pixmaps/queued16.png
+++ b/deluge/ui/data/pixmaps/queued16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/seeding16.png b/deluge/ui/data/pixmaps/seeding16.png
index fce70a8d9..2d9dc58f7 100644
--- a/deluge/ui/data/pixmaps/seeding16.png
+++ b/deluge/ui/data/pixmaps/seeding16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/tracker_all16.png b/deluge/ui/data/pixmaps/tracker_all16.png
index 36756bbcc..10a8f9832 100644
--- a/deluge/ui/data/pixmaps/tracker_all16.png
+++ b/deluge/ui/data/pixmaps/tracker_all16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/tracker_warning16.png b/deluge/ui/data/pixmaps/tracker_warning16.png
index 219432c44..7c29972a3 100644
--- a/deluge/ui/data/pixmaps/tracker_warning16.png
+++ b/deluge/ui/data/pixmaps/tracker_warning16.png
Binary files differ
diff --git a/deluge/ui/data/pixmaps/traffic16.png b/deluge/ui/data/pixmaps/traffic16.png
index ecd87204d..b4ce5ea14 100644
--- a/deluge/ui/data/pixmaps/traffic16.png
+++ b/deluge/ui/data/pixmaps/traffic16.png
Binary files differ
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">&lt;Deluge-MainWindow&gt;/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">&lt;Deluge-MainWindow&gt;/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">&lt;MainWindow&gt;/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">&lt;Deluge-MainWindow&gt;/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">&lt;Deluge-MainWindow&gt;/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
index e39cd0c7e..761f0601c 100644
--- a/deluge/ui/web/docs/template/resources/deluge.png
+++ b/deluge/ui/web/docs/template/resources/deluge.png
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/form.png b/deluge/ui/web/docs/template/resources/form.png
index f0945cf7f..ef32f38e7 100644
--- a/deluge/ui/web/docs/template/resources/form.png
+++ b/deluge/ui/web/docs/template/resources/form.png
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/deluge/ui/web/docs/template/resources/images/default/shadow.png b/deluge/ui/web/docs/template/resources/images/default/shadow.png
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/deluge/ui/web/icons/active.png b/deluge/ui/web/icons/active.png
index c9af82a5f..e5bab66cd 100644
--- a/deluge/ui/web/icons/active.png
+++ b/deluge/ui/web/icons/active.png
Binary files differ
diff --git a/deluge/ui/web/icons/add.png b/deluge/ui/web/icons/add.png
index 3bc06ca36..4b2c04743 100644
--- a/deluge/ui/web/icons/add.png
+++ b/deluge/ui/web/icons/add.png
Binary files differ
diff --git a/deluge/ui/web/icons/add_file.png b/deluge/ui/web/icons/add_file.png
index 6a057450f..80b41c813 100644
--- a/deluge/ui/web/icons/add_file.png
+++ b/deluge/ui/web/icons/add_file.png
Binary files differ
diff --git a/deluge/ui/web/icons/add_url.png b/deluge/ui/web/icons/add_url.png
index 74dc99f4d..3453f501a 100644
--- a/deluge/ui/web/icons/add_url.png
+++ b/deluge/ui/web/icons/add_url.png
Binary files differ
diff --git a/deluge/ui/web/icons/alert.png b/deluge/ui/web/icons/alert.png
index 703663813..49028db9c 100644
--- a/deluge/ui/web/icons/alert.png
+++ b/deluge/ui/web/icons/alert.png
Binary files differ
diff --git a/deluge/ui/web/icons/all.png b/deluge/ui/web/icons/all.png
index c63f8df1a..1a9ba9092 100644
--- a/deluge/ui/web/icons/all.png
+++ b/deluge/ui/web/icons/all.png
Binary files differ
diff --git a/deluge/ui/web/icons/back.png b/deluge/ui/web/icons/back.png
index fdcf9f060..cd955f590 100644
--- a/deluge/ui/web/icons/back.png
+++ b/deluge/ui/web/icons/back.png
Binary files differ
diff --git a/deluge/ui/web/icons/bottom.png b/deluge/ui/web/icons/bottom.png
index ca32c1f10..a57c743ba 100644
--- a/deluge/ui/web/icons/bottom.png
+++ b/deluge/ui/web/icons/bottom.png
Binary files differ
diff --git a/deluge/ui/web/icons/checking.png b/deluge/ui/web/icons/checking.png
index 6758e36e8..9961675c4 100644
--- a/deluge/ui/web/icons/checking.png
+++ b/deluge/ui/web/icons/checking.png
Binary files differ
diff --git a/deluge/ui/web/icons/connection_manager.png b/deluge/ui/web/icons/connection_manager.png
index a0333068f..f2f72c99a 100644
--- a/deluge/ui/web/icons/connection_manager.png
+++ b/deluge/ui/web/icons/connection_manager.png
Binary files differ
diff --git a/deluge/ui/web/icons/connections.png b/deluge/ui/web/icons/connections.png
index f0b660bd5..859df38d5 100644
--- a/deluge/ui/web/icons/connections.png
+++ b/deluge/ui/web/icons/connections.png
Binary files differ
diff --git a/deluge/ui/web/icons/create.png b/deluge/ui/web/icons/create.png
index 9008c98ac..375078c2a 100644
--- a/deluge/ui/web/icons/create.png
+++ b/deluge/ui/web/icons/create.png
Binary files differ
diff --git a/deluge/ui/web/icons/deluge-192.png b/deluge/ui/web/icons/deluge-192.png
index b49a31863..93c6feb44 100644
--- a/deluge/ui/web/icons/deluge-192.png
+++ b/deluge/ui/web/icons/deluge-192.png
Binary files differ
diff --git a/deluge/ui/web/icons/deluge-32.png b/deluge/ui/web/icons/deluge-32.png
index 6787fa39a..916f13632 100644
--- a/deluge/ui/web/icons/deluge-32.png
+++ b/deluge/ui/web/icons/deluge-32.png
Binary files differ
diff --git a/deluge/ui/web/icons/deluge-512.png b/deluge/ui/web/icons/deluge-512.png
index 866f6b939..464dd69f5 100644
--- a/deluge/ui/web/icons/deluge-512.png
+++ b/deluge/ui/web/icons/deluge-512.png
Binary files differ
diff --git a/deluge/ui/web/icons/deluge-apple-180.png b/deluge/ui/web/icons/deluge-apple-180.png
index 82f7be23f..527501fac 100644
--- a/deluge/ui/web/icons/deluge-apple-180.png
+++ b/deluge/ui/web/icons/deluge-apple-180.png
Binary files differ
diff --git a/deluge/ui/web/icons/deluge.png b/deluge/ui/web/icons/deluge.png
index 5afdbe4c6..1291dfaeb 100644
--- a/deluge/ui/web/icons/deluge.png
+++ b/deluge/ui/web/icons/deluge.png
Binary files differ
diff --git a/deluge/ui/web/icons/dht.png b/deluge/ui/web/icons/dht.png
index 363ee0c0f..2396bb132 100644
--- a/deluge/ui/web/icons/dht.png
+++ b/deluge/ui/web/icons/dht.png
Binary files differ
diff --git a/deluge/ui/web/icons/document.png b/deluge/ui/web/icons/document.png
index 5ee00182f..12b8b3e3a 100644
--- a/deluge/ui/web/icons/document.png
+++ b/deluge/ui/web/icons/document.png
Binary files differ
diff --git a/deluge/ui/web/icons/down.png b/deluge/ui/web/icons/down.png
index 68be2b311..3e81fbee8 100644
--- a/deluge/ui/web/icons/down.png
+++ b/deluge/ui/web/icons/down.png
Binary files differ
diff --git a/deluge/ui/web/icons/downloading.png b/deluge/ui/web/icons/downloading.png
index 24d6ffa38..e64aa5adc 100644
--- a/deluge/ui/web/icons/downloading.png
+++ b/deluge/ui/web/icons/downloading.png
Binary files differ
diff --git a/deluge/ui/web/icons/drive.png b/deluge/ui/web/icons/drive.png
index 6fd688eee..a358fa34e 100644
--- a/deluge/ui/web/icons/drive.png
+++ b/deluge/ui/web/icons/drive.png
Binary files differ
diff --git a/deluge/ui/web/icons/edit_trackers.png b/deluge/ui/web/icons/edit_trackers.png
index 80455ecc0..17f0d944d 100644
--- a/deluge/ui/web/icons/edit_trackers.png
+++ b/deluge/ui/web/icons/edit_trackers.png
Binary files differ
diff --git a/deluge/ui/web/icons/error.png b/deluge/ui/web/icons/error.png
index 20ad66a25..2ffb89fcc 100644
--- a/deluge/ui/web/icons/error.png
+++ b/deluge/ui/web/icons/error.png
Binary files differ
diff --git a/deluge/ui/web/icons/expand_all.png b/deluge/ui/web/icons/expand_all.png
index 050419f1c..013d55ad0 100644
--- a/deluge/ui/web/icons/expand_all.png
+++ b/deluge/ui/web/icons/expand_all.png
Binary files differ
diff --git a/deluge/ui/web/icons/favicon.ico b/deluge/ui/web/icons/favicon.ico
index 4e6f12436..176ca6688 100644
--- a/deluge/ui/web/icons/favicon.ico
+++ b/deluge/ui/web/icons/favicon.ico
Binary files differ
diff --git a/deluge/ui/web/icons/find_more.png b/deluge/ui/web/icons/find_more.png
index 199d73eae..e53a4ef57 100644
--- a/deluge/ui/web/icons/find_more.png
+++ b/deluge/ui/web/icons/find_more.png
Binary files differ
diff --git a/deluge/ui/web/icons/forward.png b/deluge/ui/web/icons/forward.png
index 2e5548996..95ee82203 100644
--- a/deluge/ui/web/icons/forward.png
+++ b/deluge/ui/web/icons/forward.png
Binary files differ
diff --git a/deluge/ui/web/icons/help.png b/deluge/ui/web/icons/help.png
index 0566ae067..e68c4586a 100644
--- a/deluge/ui/web/icons/help.png
+++ b/deluge/ui/web/icons/help.png
Binary files differ
diff --git a/deluge/ui/web/icons/high.png b/deluge/ui/web/icons/high.png
index 4b2b1ffac..6755979d6 100644
--- a/deluge/ui/web/icons/high.png
+++ b/deluge/ui/web/icons/high.png
Binary files differ
diff --git a/deluge/ui/web/icons/home.png b/deluge/ui/web/icons/home.png
index a319df64c..dda4941e9 100644
--- a/deluge/ui/web/icons/home.png
+++ b/deluge/ui/web/icons/home.png
Binary files differ
diff --git a/deluge/ui/web/icons/inactive.png b/deluge/ui/web/icons/inactive.png
index cae8b2c0a..e434dad9f 100644
--- a/deluge/ui/web/icons/inactive.png
+++ b/deluge/ui/web/icons/inactive.png
Binary files differ
diff --git a/deluge/ui/web/icons/install_plugin.png b/deluge/ui/web/icons/install_plugin.png
index aff31e77e..e50270478 100644
--- a/deluge/ui/web/icons/install_plugin.png
+++ b/deluge/ui/web/icons/install_plugin.png
Binary files differ
diff --git a/deluge/ui/web/icons/login.png b/deluge/ui/web/icons/login.png
index c06d0d119..ccc7ff3ad 100644
--- a/deluge/ui/web/icons/login.png
+++ b/deluge/ui/web/icons/login.png
Binary files differ
diff --git a/deluge/ui/web/icons/logout.png b/deluge/ui/web/icons/logout.png
index 2f53a65b4..1e9d5b83d 100644
--- a/deluge/ui/web/icons/logout.png
+++ b/deluge/ui/web/icons/logout.png
Binary files differ
diff --git a/deluge/ui/web/icons/low.png b/deluge/ui/web/icons/low.png
index ff669db7d..b9f1d2b04 100644
--- a/deluge/ui/web/icons/low.png
+++ b/deluge/ui/web/icons/low.png
Binary files differ
diff --git a/deluge/ui/web/icons/magnet.png b/deluge/ui/web/icons/magnet.png
index 61d6dabb7..6fc25ed69 100644
--- a/deluge/ui/web/icons/magnet.png
+++ b/deluge/ui/web/icons/magnet.png
Binary files differ
diff --git a/deluge/ui/web/icons/magnet_add.png b/deluge/ui/web/icons/magnet_add.png
index 37c1c36b0..f6010f54a 100644
--- a/deluge/ui/web/icons/magnet_add.png
+++ b/deluge/ui/web/icons/magnet_add.png
Binary files differ
diff --git a/deluge/ui/web/icons/magnet_copy.png b/deluge/ui/web/icons/magnet_copy.png
index a4be9d218..9b4ec6bbf 100644
--- a/deluge/ui/web/icons/magnet_copy.png
+++ b/deluge/ui/web/icons/magnet_copy.png
Binary files differ
diff --git a/deluge/ui/web/icons/move.png b/deluge/ui/web/icons/move.png
index ea83832c0..319cc166a 100644
--- a/deluge/ui/web/icons/move.png
+++ b/deluge/ui/web/icons/move.png
Binary files differ
diff --git a/deluge/ui/web/icons/no_download.png b/deluge/ui/web/icons/no_download.png
index 206d43660..e569b6a4f 100644
--- a/deluge/ui/web/icons/no_download.png
+++ b/deluge/ui/web/icons/no_download.png
Binary files differ
diff --git a/deluge/ui/web/icons/normal.png b/deluge/ui/web/icons/normal.png
index 2e5548996..95ee82203 100644
--- a/deluge/ui/web/icons/normal.png
+++ b/deluge/ui/web/icons/normal.png
Binary files differ
diff --git a/deluge/ui/web/icons/ok.png b/deluge/ui/web/icons/ok.png
index 33eb7db27..79195804c 100644
--- a/deluge/ui/web/icons/ok.png
+++ b/deluge/ui/web/icons/ok.png
Binary files differ
diff --git a/deluge/ui/web/icons/pause.png b/deluge/ui/web/icons/pause.png
index 8fdd6bc73..6e7b8c351 100644
--- a/deluge/ui/web/icons/pause.png
+++ b/deluge/ui/web/icons/pause.png
Binary files differ
diff --git a/deluge/ui/web/icons/preferences.png b/deluge/ui/web/icons/preferences.png
index 7d6deb246..e8e6a0666 100644
--- a/deluge/ui/web/icons/preferences.png
+++ b/deluge/ui/web/icons/preferences.png
Binary files differ
diff --git a/deluge/ui/web/icons/queue.png b/deluge/ui/web/icons/queue.png
index 3e4b4bee0..150ef8a43 100644
--- a/deluge/ui/web/icons/queue.png
+++ b/deluge/ui/web/icons/queue.png
Binary files differ
diff --git a/deluge/ui/web/icons/queued.png b/deluge/ui/web/icons/queued.png
index f9f74540f..74db4c5eb 100644
--- a/deluge/ui/web/icons/queued.png
+++ b/deluge/ui/web/icons/queued.png
Binary files differ
diff --git a/deluge/ui/web/icons/recheck.png b/deluge/ui/web/icons/recheck.png
index 199d73eae..e53a4ef57 100644
--- a/deluge/ui/web/icons/recheck.png
+++ b/deluge/ui/web/icons/recheck.png
Binary files differ
diff --git a/deluge/ui/web/icons/remove.png b/deluge/ui/web/icons/remove.png
index 3f911914d..70db1ca4e 100644
--- a/deluge/ui/web/icons/remove.png
+++ b/deluge/ui/web/icons/remove.png
Binary files differ
diff --git a/deluge/ui/web/icons/seeding.png b/deluge/ui/web/icons/seeding.png
index fce70a8d9..2d9dc58f7 100644
--- a/deluge/ui/web/icons/seeding.png
+++ b/deluge/ui/web/icons/seeding.png
Binary files differ
diff --git a/deluge/ui/web/icons/start.png b/deluge/ui/web/icons/start.png
index ff669db7d..b9f1d2b04 100644
--- a/deluge/ui/web/icons/start.png
+++ b/deluge/ui/web/icons/start.png
Binary files differ
diff --git a/deluge/ui/web/icons/top.png b/deluge/ui/web/icons/top.png
index 850656f3d..db9969d2b 100644
--- a/deluge/ui/web/icons/top.png
+++ b/deluge/ui/web/icons/top.png
Binary files differ
diff --git a/deluge/ui/web/icons/traffic.png b/deluge/ui/web/icons/traffic.png
index ecd87204d..b4ce5ea14 100644
--- a/deluge/ui/web/icons/traffic.png
+++ b/deluge/ui/web/icons/traffic.png
Binary files differ
diff --git a/deluge/ui/web/icons/up.png b/deluge/ui/web/icons/up.png
index 223e73326..9aa7c6437 100644
--- a/deluge/ui/web/icons/up.png
+++ b/deluge/ui/web/icons/up.png
Binary files differ
diff --git a/deluge/ui/web/icons/update.png b/deluge/ui/web/icons/update.png
index 0ff6d45a7..ee61b01e9 100644
--- a/deluge/ui/web/icons/update.png
+++ b/deluge/ui/web/icons/update.png
Binary files differ
diff --git a/deluge/ui/web/icons/upload_slots.png b/deluge/ui/web/icons/upload_slots.png
index 0e7000d81..294523eb5 100644
--- a/deluge/ui/web/icons/upload_slots.png
+++ b/deluge/ui/web/icons/upload_slots.png
Binary files differ
diff --git a/deluge/ui/web/icons/warning.png b/deluge/ui/web/icons/warning.png
index f66feda89..c81dc592f 100644
--- a/deluge/ui/web/icons/warning.png
+++ b/deluge/ui/web/icons/warning.png
Binary files differ
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
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/grid/hmenu-unlock.png b/deluge/ui/web/themes/images/access/grid/hmenu-unlock.png
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/slider/slider-bg.png b/deluge/ui/web/themes/images/access/slider/slider-bg.png
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/slider/slider-thumb.png b/deluge/ui/web/themes/images/access/slider/slider-thumb.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/window/right-corners.png b/deluge/ui/web/themes/images/access/window/right-corners.png
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/access/window/top-bottom.png b/deluge/ui/web/themes/images/access/window/top-bottom.png
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/hmenu-lock.png b/deluge/ui/web/themes/images/default/grid/hmenu-lock.png
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/grid/hmenu-unlock.png b/deluge/ui/web/themes/images/default/grid/hmenu-unlock.png
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/slider/slider-bg.png b/deluge/ui/web/themes/images/default/slider/slider-bg.png
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/slider/slider-thumb.png b/deluge/ui/web/themes/images/default/slider/slider-thumb.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/right-corners.png b/deluge/ui/web/themes/images/default/window/right-corners.png
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/default/window/top-bottom.png b/deluge/ui/web/themes/images/default/window/top-bottom.png
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/slider/slider-thumb.png b/deluge/ui/web/themes/images/gray/slider/slider-thumb.png
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/window/left-corners.png b/deluge/ui/web/themes/images/gray/window/left-corners.png
index 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
Binary files differ
diff --git a/deluge/ui/web/themes/images/gray/window/right-corners.png b/deluge/ui/web/themes/images/gray/window/right-corners.png
index 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
Binary files differ
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
diff --git a/setup.py b/setup.py
index 6a441f745..ef70f20b0 100755
--- a/setup.py
+++ b/setup.py
@@ -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
diff --git a/tox.ini b/tox.ini
index 405610d7c..3756a5406 100644
--- a/tox.ini
+++ b/tox.ini
@@ -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